情況是這樣:
我在Windows下用串口除錯助手和linux開發板進行通信測驗,發現一個很詭異的事情。
在ascii碼表中,我查得‘a’的值0x61,那么我在除錯助手里面輸入61,以hex發送。結果我在xshell里面遠程看到開發板接收到的并不是‘a’。反復嘗試,我發現發送0x3d,開發板接收顯示的才是‘a’。
然后再試了其他值,得出了下面的規律:
hex 符號
0B z
0D y
0F x
11 w
13 v
15 u
17 t
19 s
1B r
1D q
1F p
21 o
23 n
25 m
27 l
29 k
2B j
2D i
2F h
31 g
33 f
35 e
37 d
39 c
3B b
3D a
3F `
41 _
43 ^
45 ]
47 \
49 [
4B Z
4D Y
4F X
51 W
53 V
55 U
57 T
59 S
5B R
5D Q
5F P
61 O
63 N
65 M
67 L
69 K
6B J
6D I
6F H
71 G
73 F
75 E
77 D
79 C
7B B
7D A
7F @
81 ?
83 >
85 =
87 <
89 ;
8B :
8D 9
8F 8
91 7
93 6
95 5
97 4
99 3
9B 2
9D 1
9F 0
我只有按照上面的規則發送對應的hex,開發板才能收到我想要的字符。反過來,從開發板往除錯助手發送,要按正確的ascii表來進行,而不是按上面的規則。
這里面是不是有什么轉換規則啊? 求大神指教
uj5u.com熱心網友回復:
你是不是10進制16進制搞混了。uj5u.com熱心網友回復:
串口資料bit位是不是反的?uj5u.com熱心網友回復:
你是指哪里?這個bit位的順序還能自己設定嗎
uj5u.com熱心網友回復:
兩端的波特率,資料位,停止位,檢測位,流控一樣嗎?uj5u.com熱心網友回復:
0x3d 不就是 61 嗎uj5u.com熱心網友回復:
串口設定問題。波特率是否一致。uj5u.com熱心網友回復:
0x3D = 613*16 + 13 = 61
有A-E字母的是16進制
uj5u.com熱心網友回復:
我也就猜猜。串口一個位元一串穿,轉成位元組是第一個位元先傳還是最后一個bit先傳,不知道有沒有標準。如果沒標準的話,就可能搞反。
uj5u.com熱心網友回復:
用了兩個TTL轉232芯片uj5u.com熱心網友回復:
可以直接列印值而不列印成字符來查看嗎?先去確定發-傳-收-顯哪里出了問題吧。一般ASCII不會亂改的吧。uj5u.com熱心網友回復:
硬體的問題,是不是將232電平信號接到TTL電平信號上了轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/73065.html
標籤:應用程序開發區
上一篇:求助 作業系統執行緒問題
下一篇:linux grep命令
