9-Bit Data Value
I was wondering if you would be able to add a feature to Tera Term that would allow a user to select a "9 bit" value in the Serial port setup-->Data: field which would then send a corresponding value of 9 to the IOCTL_SERIAL_SET_LINE_CONTROL function so that Wordlength=9.
I am needing this feature in order use a USB 232/485 serial UART made by Exar that supports "9-bit mode" (ie where the parity bit is set to 1 for the leading byte of packet, signifying it is an address byte, and the parity bit for the rest of the bytes are set to 0, signifying that they are data bytes).
Here is some product Info:
These UARTs are very capable and are the only USB form-factor devices that I have ever found (been looking for 7+ years) that support 9-bit mode. There are a number of other UART devices out there that have this feature (ie Oxford 950 UART, etc.) but are only available in a PCI/PCIe form factor, not USB.
I am using a test application that ships with the Exar devices (called Serial_Test_USB_1.0.7a.exe) that allows you to put the device into 9-bit mode by simply entering a 9 in the Data Bits field of the application when initializing the port. Here is a Portmon capture of what it looks like behind the scenes in windows when opening and closing a port (note Wordlength:9 of the IOCTL_SERIAL_SET_LINE_CONTROL function)
0 0.08092462 Serial_Test_USB IRP_MJ_CREATE Serial17 SUCCESS Options: Open
1 0.00000207 Serial_Test_USB IOCTL_SERIAL_GET_BAUD_RATE Serial17 SUCCESS
2 0.00000129 Serial_Test_USB IOCTL_SERIAL_GET_LINE_CONTROL Serial17 SUCCESS
3 0.00000103 Serial_Test_USB IOCTL_SERIAL_GET_CHARS Serial17 SUCCESS
4 0.00000093 Serial_Test_USB IOCTL_SERIAL_GET_HANDFLOW Serial17 SUCCESS
5 0.09985373 Serial_Test_USB IOCTL_SERIAL_SET_BAUD_RATE Serial17 SUCCESS Rate: 250000
6 0.00297506 Serial_Test_USB IOCTL_SERIAL_SET_RTS Serial17 SUCCESS
7 0.00295931 Serial_Test_USB IOCTL_SERIAL_SET_DTR Serial17 SUCCESS
8 0.00397779 Serial_Test_USB IOCTL_SERIAL_SET_LINE_CONTROL Serial17 SUCCESS StopBits: 1 Parity: NONE WordLength: 9
9 0.00000112 Serial_Test_USB IOCTL_SERIAL_SET_CHAR Serial17 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:0 XOFF:0
10 0.01396658 Serial_Test_USB IOCTL_SERIAL_SET_HANDFLOW Serial17 SUCCESS Shake:1 Replace:40 XonLimit:0 XoffLimit:0
11 0.00000128 Serial_Test_USB IOCTL_SERIAL_SET_TIMEOUTS Serial17 SUCCESS RI:-1 RM:0 RC:0 WM:0 WC:0
12 0.00365136 Serial_Test_USB IRP_MJ_DEVICE_CONTROL Serial17 SUCCESS IOCTL: 0x222044
13 0.00000321 Serial_Test_USB IOCTL_SERIAL_SET_WAIT_MASK Serial17 SUCCESS Mask: RXCHAR
14 3.62795603 Serial_Test_USB IOCTL_SERIAL_WAIT_ON_MASK Serial17 SUCCESS
15 0.00001644 Serial_Test_USB IOCTL_SERIAL_SET_WAIT_MASK Serial17 SUCCESS Mask:
16 0.00000204 Serial_Test_USB IOCTL_SERIAL_GET_COMMSTATUS Serial17 SUCCESS
17 0.00000096 Serial_Test_USB IRP_MJ_READ Serial17 SUCCESS Length 0:
18 0.00000178 Serial_Test_USB IOCTL_SERIAL_WAIT_ON_MASK Serial17 INVALID PARAMETER
19 0.00000195 Serial_Test_USB IRP_MJ_CLEANUP Serial17 SUCCESS
20 0.00551665 Serial_Test_USB IRP_MJ_CLOSE Serial17 SUCCESS
In researching over the past few years I have noticed that there is more demand lately from people needing this 9-bit capability (originally developed back in the 80's-90's to support efficient serial processing in motorola microcontrollers) that I am assuming is due the widespread use of new small form factor computers and microcontrollers (like arduino, raspberry pi, etc). Hopefully this is a feature that you will consider adding to your already invaluable Tera Term product that will make it even more valuable for a number of scientists/engineers, hobbyists, and technical users out there.
As for myself and my immediate needs, I am going to request a priority 9 for this ticket due to the fact I am working on a critical project that I would really love to use both Tera Term and these Exar devices on that will end up being the ultimate "best of both worlds" solution for me.