Arduino中Serial.read()与Serial.write()关于数字的不同处理

Arduino的编程中,串口输入与输出都是针对ASCII码值的,比如字母's'的ASCII码值为115。

输入方面,对于Serial.read(), monitor中输入's'或者115,程序得到的值都为's'. 而且Serial.read()每次只能接受一个byte的数据,如果想要输入字符串,则需要专门写一段程序来实现。

输出方面,理论上Serial.write('s') 与Serial.write(115) 应该相同,然而事实并非如此。实际测试中,发现Serial.write(115) 与Serial.write('115') 相同,由此可以推测Serial.write()函数中有代码专门对这种情况进行了处理,将数字隐式地转化成了字符串,使用户不用关心ASCII码,并尽量贴近于其他语言。然而缺点就是与Serial.read()的不统一。

另外,针对这种情况,Matlab的fwrite() 函数就做的前后一致,下面是一段关于串口传输的Matlab代码:

COM='COM4';
s=serial(COM);
fopen(s);
set(s, 'BaudRate', 57600);
fwrite(s, 's');
fwrite(s, 115);

打开串口COM4,并设置其波特率为57600,两句fwrite() 的输出结果经测试一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值