情况是这样:
我在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表来进行,而不是按上面的规则。
这里面是不是有什么转换规则啊? 求大神指教

解决方案 »

  1.   

    串口数据bit位是不是反的?
      

  2.   

    你是指哪里?这个bit位的顺序还能自己设置吗
      

  3.   

    0x3D = 61
    3*16 + 13 = 61
    有A-E字母的是16进制
      

  4.   

    你是指哪里?这个bit位的顺序还能自己设置吗
    我也就猜猜。串口一个比特一串穿,转成字节是第一个比特先传还是最后一个bit先传,不知道有没有标准。如果没标准的话,就可能搞反。
      

  5.   

    用了两个TTL转232芯片
      

  6.   

    可以直接打印值而不打印成字符来查看吗?先去确定发-传-收-显哪里出了问题吧。一般ASCII不会乱改的吧。
      

  7.   

    硬件的问题,是不是将232电平信号接到TTL电平信号上了