This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

PC link to 8051 Mode 2/3: Multiprocessor Serial Bus

Cross-posting from the 8052.com forum http://www.8052.com/forum/index.phtml

A while back (http://www.8052.com/forum/read.phtml?id=23083), I asked about how to get a PC to read the 9th bit in Mode 2/3: Multiprocessor Serial bus format.

I need to be able to detect the state of the 9th bit for each received byte.

Mahmood Elnasser suggested the cport library: http://www2.arnes.si/~sopecrni/downloads/CPort263.zip

I've downloaded this, and it doesn't look like it'll do the job :-(
(It looks like it'll have the same problem as AsyncPro)

The OnRxChar Event could return any number of characters, but the LastErrors Method - as its name suggests - only tells me what the last error was; ie, I can't tell which of the received bytes had the 9th bit set (Parity error).

Any help would be greatly appreciated.

I'm currently looking around at direct IO drivers for Windows

(yes, I know it'd be a doddle in MS-DOS).

Parents
  • Anyway, back to the subject:

    Actually doing it in the UART is easy: just set it to 8 data bits plus Parity, and the UART sees the 9th bit as a Parity bit. Thence one can easily deduce the value of bit-9.

    There's plenty of 'C' code on the internet showing how to hack into the UART registers to do this.

    The problem is how to do it from 32-bit Windows! :-(

    The trouble is that the Win32 API, and things like AsyncPro, don't let you read individual bytes from the UART and check the status for each byte: they just give you a few bytes and say "there was a parity error somewhere in this lot" - which is obviously no good at all! :-(

Reply
  • Anyway, back to the subject:

    Actually doing it in the UART is easy: just set it to 8 data bits plus Parity, and the UART sees the 9th bit as a Parity bit. Thence one can easily deduce the value of bit-9.

    There's plenty of 'C' code on the internet showing how to hack into the UART registers to do this.

    The problem is how to do it from 32-bit Windows! :-(

    The trouble is that the Win32 API, and things like AsyncPro, don't let you read individual bytes from the UART and check the status for each byte: they just give you a few bytes and say "there was a parity error somewhere in this lot" - which is obviously no good at all! :-(

Children