471,579 Members | 1,348 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,579 software developers and data experts.

UART parity setting as "mark" or "space" (using Pyserial???)

Hi,

I am trying to set-up communication to the coin change-giver from my
Linux box using the Python code. The change giver uses MDB (Multi Drop
Bus) serial protocol to communicate with the master. MDB protocol is
the 9bit serial protocol:
(TX, RX lines only) 9600bps, 9bits, No Parity, 1 Start, 1 Stop.

I would like to control the UART "parity bit" to try to simulate 9bit
communication.

Using Pyserial it is possible to set the parity bit as ODD, EVEN or
NONE.

I have found in the following link (paragraph 21.3)
http://howtos.linux.com/howtos/Seria...1.shtml#ss21.1
that UART hardware supports two "rarely used" parity settings as well:
mark parity and space parity (these setings are also known as "sticky
parity")

A "mark" is a 1-bit (or logic 1) and a "space" is a 0-bit (or logic 0).
For mark parity, the parity bit is always a one-bit. For space parity
it's always a zero-bit.

Does anybody here knows some "tricks" how to set up the mark and space
parity on the UART (using pyserial???), so I can simulate 9bit
communication? (I know it sounds silly, but I would like to try to
re-configure the UART parity before each byte transmission).

Any comment will be appreciated.

Petr Jakes

Nov 3 '05 #1
2 11407
On 2005-11-03, Petr Jakes <pe**@tpc.cz> wrote:
Using Pyserial it is possible to set the parity bit as ODD, EVEN or
NONE.
Correct. Those are the parity settings supported by pretty
much all platforms.

[...]
Does anybody here knows some "tricks" how to set up the mark
and space parity on the UART (using pyserial???),
What OS? Mark and space parity are not supported by the Unix
termios API that is used to do serial port stuff.
so I can simulate 9bit communication? (I know it sounds silly,
but I would like to try to re-configure the UART parity before
each byte transmission).


I suspect you're going to have to talk to the UART yourself to
do this.

In addition to the problem with mark/space being unsupported,
you have to wait until each byte is completely sent (including
the parity bit) before changing the parity and loading the next
byte into the data register. Many OSes "drain" functions are
notoriously inaccurate.

--
Grant Edwards grante Yow! Did I say I was a
at sardine? Or a bus???
visi.com
Nov 4 '05 #2
To provide feedback:

I have found the way how to control serial port parity bit on the Linux
(how to set the parity bit to the "mark" or "space" parity) within
Python using termios module.

With the help of:
http://www.lothosoft.ch/thomas/libmi...paceparity.php
=======================================
import serial
import termios
import TERMIOS

ser=serial.Serial('/dev/ttyS0', 9600, 8, "N", timeout=1)

iflag, oflag, cflag, lflag, ispeed, ospeed, cc = termios.tcgetattr(ser)

cflag |= PARENB | CMSPAR # To select SPACE parity
cflag &= ~PARODD

cflag |= PARENB | CMSPAR | PARODD # to select MARK parity

termios.tcsetattr(ser, termios.TCSANOW, [iflag, oflag, cflag, lflag,
ispeed, ospeed, cc])
=======================================
Using above mentioned it is possible to establish 9bit serial
communication according to the given protocol specifics. It is
necessary to control parity bit setting before sending each
communication byte.

Regards

Petr Jakes

Nov 22 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by Martin Goldman | last post: by
reply views Thread by Mark Moore | last post: by
12 posts views Thread by Robert Mark Bram | last post: by
4 posts views Thread by mairhtin o'feannag | last post: by
289 posts views Thread by napi | last post: by
20 posts views Thread by Mark Harrison | last post: by
11 posts views Thread by taoberly | last post: by
350 posts views Thread by Lloyd Bonafide | last post: by
reply views Thread by lumer26 | last post: by
1 post views Thread by lumer26 | last post: by
reply views Thread by lumer26 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.