2013-05-10 57 views
0

我只需要將這樣一個十六進制發送到遠程串行,以便設備接受它。將2個字節的十六進制發送到遠程串行

2字節十六進制我需要發送的是:

181E 

我可以遠程登錄到遠程串口,併發送命令:

telnet x.x.x.x port 

181E 

我回來的響應這是好的。

我該怎麼在linux c上做這個?

我想使用寫入功能。

err = write(socket,181E,2); 

或者如何將2字節小數存儲到一個變量,所以它會被讀爲181E?

int this_is_2_bytes = 181E; // Is this correct? 

err = write(socket, this_is_2_bytes, sizeof(this_is_2_bytes)); 
+0

我不知道你在做什麼,但你應該使用「期望」。 – xaxxon 2013-05-10 04:24:17

回答

1

您需要發送一個十六進制字符串。所以,

const char cmd[] = "181E"; 
err = write(socket, cmd, strlen(cmd)); 
+0

當我這樣做時,我得到了未聲明的cmd。所以我只是把它改成了const char cmd [] =「181E」;哪些工作。 – Defyleiti 2013-05-10 03:08:56

+0

糟糕,Java在那裏爬行,修復了。 – EJP 2013-05-10 03:11:39

+0

如何在發送181E後添加按回車?我可以像這樣const char cmd [] =「181E \ r」; – Defyleiti 2013-05-10 04:16:39

0

不,寫一個int在所有系統上都是不正確的。寫一個兩元素的字節數組。

+0

這樣做unsigned char cmd [] = {0x18,0x1E}; err = write(socket,cmd,sizeof(cmd));不起作用。發送到設備的字符就像這樣「(」我得到了一個錯誤。 – Defyleiti 2013-05-10 03:18:23

0

write()函數需要一個指針作爲第二個參數。將它存儲在字符數組中。