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