繁体   English   中英

将C ++串行端口奇偶校验更改代码从Linux移植到Windows

[英]Porting C++ serial port parity change code from Linux to Windows

我没有真正的编程经验,但是我试图将C ++代码从Linux移植到Windows。 这是一个写入串行端口并读取答案的函数,然后将其解析。 我可能可以将它们放在一起,但是我不确定如何将以下内容从Linux移植到Windows:

void serialPort::mark() {
    options.c_cflag |= PARENB | CMSPAR | PARODD;
  tcsetattr(fd, TCSAFLUSH, &options);
}

void serialPort::space() {
    options.c_cflag |= PARENB | CMSPAR;
    options.c_cflag &= ~PARODD;
  tcsetattr(fd, TCSANOW, &options);

这些功能用于在写入串行端口时在标记和空间奇偶校验之间切换-命令的第一个字节必须以标记奇偶校验写入,其余部分以空间奇偶校验写入,如下所示:

char sum=checksum(length,command);
char* bufptr;
int nbytes=0;
mark();
write(fd,&length,1); //write first byte with mark parity
usleep(2000);
read(fd,buffer,255);
space(); //write remaining bytes with space parity
for(int i=0; i<length;i++){
    write(fd,&command[i],1);
    usleep(2000);
    read(fd,buffer,1);
}
write(fd,&sum,1);

但我坚持这一点。 我什至不知道Windows是否有可能。 有人请问个主意吗? 非常感谢你。

Windows上的等效操作是在传递的DCB结构的Parity成员中使用适当的标志调用SetCommState。 它确实支持标记奇偶校验和空间奇偶校验。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM