通过usb转换器rs232发送特殊的ascii char

时间:2017-07-25 18:31:26

标签: c++

我需要通过usb rs232转换器向我的设备发送一些特殊的字符。

b.cpp:

unsigned char message[] = "ÀwLO~P";

int main(void) {

   openPort(port, 9600);
   int i = 0;

//   while (i < 2000) {
   writePort(message);
   char* readChar = readPort();
   cout <<"rr "<< static_cast<string>(readChar);

 //     i++;
//     sleep(5);
// }

closePort();

return EXIT_SUCCESS;

}

我的writePort函数:

void writePort(unsigned char* message) {
int e;
 for (int i = 0; i < 7; i++) {
   e = message[i];
   printf("Out: %d", e) ;
    write(tty_fd, &message[i], 6);
    usleep(10);
 }
}

Beacose我的第一个符号超出范围正常字符“À”192我在printf中看到它被分成两个字节。

printf输出:

 Out: 195 Out: 128 Out: 119 Out: 76 Out: 79 Out: 126 Out:80

我怎样才能发送那个特定的字符?

1 个答案:

答案 0 :(得分:2)

将非ASCII字符放入C源文件是有风险的。如果需要特定的字节序列,请将其写为数字数组:

unsigned char message[] = { 192, 119, 76, 79, 126, 80 };

或者作为具有十六进制转义符的字符串:

unsigned char message[] = "\xc0wLO~P";