|
vb mscomm和嵌入式系统串口通讯,老式计算机通讯不正常?
[复制链接]
偶现在用vb mscomm和linux上程序通讯,采用规范模式,没有用原始模式(raw),
linux扳子上程序这样做的:
bzero(&newtio, sizeof(newtio)); ///clear struct for new
//newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR | ICRNL;
newtio.c_lflag = ICANON;
newtio.c_cc[VINTR] = 0;///Ctrl-c
newtio.c_cc[VQUIT] = 0;/// Ctrl-\
newtio.c_cc[VERASE] = 0;/// del */
newtio.c_cc[VKILL] = 0;/// @
newtio.c_cc[VEOF] = 4;/// Ctrl-d
newtio.c_cc[VTIME] = 0;/// inter-character timer unused */
newtio.c_cc[VMIN] = 1;/// blocking read until 1 characr arrives */
newtio.c_cc[VSWTC] = 0; /// '\0'
newtio.c_cc[VSTART] = 0;/// Ctrl-q
newtio.c_cc[VSTOP] = 0; ///Ctrl-s
newtio.c_cc[VSUSP] = 0; /// Ctrl-z
newtio.c_cc[VEOL] = 0; ///'\0'
newtio.c_cc[VREPRINT] = 0;/// Ctrl-r
newtio.c_cc[VDISCARD] = 0; /// Ctrl-u
newtio.c_cc[VWERASE] = 0; /// Ctrl-w */
newtio.c_cc[VLNEXT] = 0; ///Ctrl-v */
newtio.c_cc[VEOL2] = 0; ///'\0'
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);///Setting new properties
然后,用vb 6.0 的mscomm控件和其通讯,115200,8N1,发现大多数计算机上串口都正常
,但很多老笔记本上的串口不能和板子正常通讯,调试发现,每次win32发给linux的数据前多了一个0x00的字节;但是,如果采用usb转串口线和板子通讯,不管什么系统计算机都正常,为什么呢???难道驱动不同吗?
|
|