1

私はプログラミングの経験はあまりありませんが、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で可能かどうかさえわかりません。誰かアイデアをくださいませんか?どうもありがとうございました。

4

1 に答える 1

0

Windows での同等の操作は、渡された DCB 構造体のパリティ メンバーに適切なフラグを指定して SetCommState を呼び出すことです。マーク パリティとスペース パリティはサポートされています。

于 2015-03-10T14:27:20.230 に答える