2017-07-25 3 views
-2

私のデバイスにusb rs232コンバータを介していくつかの特別な文字を送信する必要があります。usbコンバータrs232を介して特別ascii charを送信

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); 
} 
} 

私の最初の兆候は、私はprintfのように表示192 "A" の範囲の通常のcharの外にあるBeacoseそれは2バイトに分割されます。

printfの出力:

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

私はspecyficシャア送ることができますどのように?

+0

なぜ' 7'あなたが特定バイト列をしたい場合は、数字の配列としてそれを書くのか?私は 'int i = 0;メッセージ[i]。 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 }; 

または16進エスケープと文字列として:私は7` < `で

unsigned char message[] = "\xc0wLO~P"; 
関連する問題