linux c语言 中ascii的问题

linux c语言 中ascii的问题,第1张

你在那里看的ASCII码表?

这个里面写的比较清楚

http://moodle.hsshn.pudong-edu.sh.cn/file.php/99/resource/ASCII.htm

很多字符能否打印和编码方式有关.你说的能打印0-31的DOS,是因为DOS当时也没有更多的编码,把ASCII中不能输出的部分放置了一些符号.

ASCII规定0-31为控制字符,此外结束到127,127以后的没有规定.

具体的可以在linux里面man ascii

不要把DOS的错误当成标准......

首先,如果我们不是开发串口driver的,而只是用串口来传入自己定义格式的数据,然后根据得到的数据做相关的解释,我们需要设置这些,

options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG) /*Input*/

options.c_oflag &= ~OPOST /*Output*/

然后就是重点,如何设置software flow control,因为自己定义的数据格式中,一般会有标识标识数据开始和结束,如何定义,请看下面:

/* open soft flow control */

options.c_iflag |= (IXON | IXOFF | IXANY)

/* flow start with 0x11, end with 0x13 */

options.c_cc[VSTART] = 0x11

options.c_cc[VSTOP] = 0x13

这样,你往串口发送数据时,串口就会认出0x11和0x13之间的数据了。当然,如果你传输的不是ascii,你得控制数据中不会出现0x11和0x13。

第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;

ASCⅡ 字符

0 NUL

1 SOH

2 STX

3 ETX

4 EOX

5 ENQ

6 ACK

7 BEL

8 BS

9 TAB

10 LF

11 VT

12 FF

13 CR

14 SO

15 SI

16 DLE

17 DC1

18 DC2

19 DC3

20 DC4

21 NAK

22 SYN

23 ETB

24 CAN

25 EM

26 SUM

27 ESC

28 FS

29 GS

30 RS

31 US

32 空格

33 !

34 "

35 #

36 $

37 %

38 &

39 ''

40 (

41 )

42 *

43 +

44 ,

45 -

46 .

47 /

48 0

49 1

50 2

51 3

52 4

53 5

54 6

55 7

56 8

57 9

58 :

59

60 <

61 =

62 >

63 ?

64 @

65 A

66 B

67 C

68 D

69 E

70 F

71 G

72 H

73 I

74 J

75 K

76 L

77 M

78 N

79 O

80 P

81 Q

82 R

83 S

84 T

85 U

86 V

87 W

88 X

89 Y

90 Z

91 [

92 \

93 ]

94 ^

95 _

96 、

97 a

98 b

99 c

100 d

101 e

102 f

103 g

104 h

105 i

106 j

107 k

108 l

109 m

110 n

111 o

112 p

113 q

114 r

115 s

116 t

117 u

118 v

119 w

120 x

121 y

122 z

123 {

124 |

125 }

126 ~

127 DEL


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8342537.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存