我需要通过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
我怎样才能发送那个特定的字符?
答案 0 :(得分:2)
将非ASCII字符放入C源文件是有风险的。如果需要特定的字节序列,请将其写为数字数组:
unsigned char message[] = { 192, 119, 76, 79, 126, 80 };
或者作为具有十六进制转义符的字符串:
unsigned char message[] = "\xc0wLO~P";