簡體   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