串列埠的Hex AscII傳送與顯示

2022-02-01 01:27:33 字數 794 閱讀 3927

首先,底層的資料傳輸都是位元組流,所以不管選擇什麼方式,都會被分解為乙個乙個的位元組。

1、選擇hex傳送就代表你要傳送的內容是純數字,由程式完成string到int再到byte的轉化。所以你應該保證每個你要傳送的數都是兩位的,如果是7就應該寫07,因為程式會每兩位每兩位地讀。如果你選擇了hex傳送,而輸入的又是字元,比如你寫了ab,那麼就會被程式讀為16進製制的ab。這就是不同的概念了,無論你選擇什麼方式顯示都不能得到原來的ab了。

2、選擇ascii傳送就代表你要傳送的是字串,這時候程式就會一位一位地讀,比如你寫了1234,在位元組流中傳遞的就是123對應的ascii碼,31,32,33,34(十六進製制的)。比較而言,在hex傳送模式下,寫了1234,會被傳送的就是12,34,如果是01020304那就是01,02,03,04。這個時候,你寫ab就會傳送相應的ascii碼61,62,其他字元同理。

到這裡,資料已經傳送出去了,接下來就是顯示的問題。是顯示模式,不是解析,不存在解析。

3、選擇hex顯示就是把位元組轉化為16進製制整型,你收到的是12,34,就顯示為12,34,你收到31,32,33,34,也顯示為31,32,33,34,如果收到ab呢,那也是ab。

4、選擇ascii顯示呢,就會把你接收到的十六進製制轉化為對應的字元,比如你收到了31,就會顯示為1。這種模式下可能會出現亂碼,原因就是ascii碼只從0-7f。如果你在十六進製制傳送模式下傳送了字元,比如傳送了ab,那你就會收到ab,這個並沒有ascii碼對應的字元。

所以,在hex模式下如果輸入字元,是無論如何接收不到正確的資料的,其他方式那就隨意了。重要的是,方式的選擇改變的不是資料本身,而是資料的表現形式。

C 串列埠通訊,串列埠的傳送與接收,獲取本機串列埠

serialport 串列埠類 1.引用命名空間 using system.io.ports 2.建立物件 serialport com new serialport 3.給串列埠埠與波特率屬性賦值 com.portname com4 com.baudrate 9600 4.開啟串列埠 com.op...

stm32之串列埠DMA傳送與接收

硬體環境 stm32f103zet6戰艦開發板 軟體環境 mdk5 串列埠除錯助手 概念解析 dma direct memory access 直接儲存器訪問 dma作用 用來傳輸資料的,在 傳輸呢,可以在外設和儲存器之間,也可以在儲存器和儲存器之間。dma傳輸方式無需cpu直接控制傳輸,能使cpu...

STM32Cube IDE配置串列埠傳送與接收

串列埠與中斷配置如下 在生成的main函式中,新增開啟串列埠接收中斷 hal init user code begin init user code end init configure the system clock systemclock config user code begin sysi...