There is no easy way to do it, though you can work around it: You can tell it to generate even, odd, or no parity. Parity is sent as a ninth bit, and is based on the number of 1s in the 8 bits of data. Calculate the parity yourself, and then change the settings to even or odd so the computer sets the parity bit according to your needs. ie: EVEN parity will set the ninth bit to 1 if there are an even number of 1s in your 8-bits of data. ODD parity sets the ninth bit to 1 if there are an odd number of 1s in your 8-bits of data. You want to send 01001110 and a 1 as the ninth bit. This has an even number of 1s. mscomm.settings = "9600,e,8,1" will make the parity (and thus your ninth bit) 1 If you then want to send 1011100 and a 0 as the ninth bit: mscomm.settings = "9600,o,8,1" will make the parity (and thus your ninth bit) 1 You should be able to change these settings without closing and opening the port. It's extra work, but it should work well for you. -Adam Joe McCauley wrote: > > Hi, > > I need to communicate over tens of meters with several PICs (16f874) using > RS232. The idea is that all devices listen for their address and then accept > commands to recieve or send data packets. I am looking for a driver chip to > allow me to do this. Ideally the driver should be able to recieve data at > any time, but only turn on its output when data has to be sent by that > device. (avoiding bus contention) > Cost is an issue. > On a slightly OT note, does any one know how to use an MSComm control in > Visual Basic to send 9 bits of data? I was planning to use the 9 bit mode in > the PIC to distinguish between address and data. > > Thanks for any help > > Joe