2017-07-25 48 views
-2

我需要通过USB RS232转换器发送一些特殊字符到我的设备。通过USB转换器发送特殊ASCII字符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; 

}

我写端口功能:

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我的第一个迹象是超出范围正常字符 “A” 192我在printf中看到,它分为两个字节。

printf的输出:

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

我怎么能发送的specyfic字符?

+0

为什么'7'在'I <7'?我期望'int i = 0;消息[I];我++' – chux

+0

偏题:神奇的数字正在杀死你。例如,为什么6在这里? 'write(tty_fd,&message [i],6);' – user4581301

+0

- 不是有效的ASCII,因此请检查文件的字符编码。可能它不是ASCII。 – user4581301

回答

2

将非ASCII字符放入C源文件是有风险的。如果你想要一个特定字节串,就写出来作为数字数组:

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

或作为十六进制字符串逃脱:

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