完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
是这样的,我想实现蓝牙的汉字传输,蓝牙软件本身支持有GB2312编码格式,现在想改动接受串口程序和发送数据程序,但是发现一些问题
我看了一下串口USART_DR这个寄存器,我发现他是一个32位寄存器,31:9是保留,只有8:0是存的数据值,但是汉字是两个字节,需要的是16位,这样一来可以实现吗? 而且串口接收数据的函数在底层是这个,uint16_t USART_ReceiveData(USART_TypeDef* USARTx),如果说只有8位数据值,为什么又要返回16位的无符号整型呢? |
|
相关推荐
6个回答
|
|
另外,发送汉子这样两个字节数据的时候,都是先发送一个字节再发送另外一个字节,对于中英文混杂的情况来说,如果接收端接收到的一个字节数值大于128那么说明这个数据是汉子,当前接收的是汉字的第一个字节,为了完整知道这个汉字是什么,还需要再接受一个字节;反之则说明当前接收到的这个字节是一个英文字符。
事实上,液晶屏显示汉字也用到了相同的方式,楼主如果感兴趣可以参考一下。 |
|
|
|
还有一个就是原子本身程序中串口发送函数,是不支持中文的吧?
|
|
|
|
串口例程支持中文……楼主你没有看主程序吗。。。发送的都是中文啊。。。
|
|
|
|
其实你不用关心传送的是汉字还是数字还是英文,这些文字在内存中的表现都是字节数据,具体怎么解析这些数据,需要接收端来处理.
比如"中国china"这个字符串要发送,ANSI编码的话在内存中就是9个字节,发送时直接按顺序发这9个字节就行.接收端可一次性收完这9个字节,再按ANSI编码显示文字. 至于为什么USART_ReceiveData会返回16位整数,因为数据为有可能被配置为9位,所以8位当然不够用了. |
|
|
|
|
|
|
|
这个容易,之前做过NRF24L01的,自己设计一个上位机,传输汉字到LCD12860
|
|
|
|
只有小组成员才能发言,加入小组>>
317浏览 1评论
433浏览 1评论
561浏览 1评论
用PSOC6 BLE当外围设备,两者传输数据时,psoc6概率性出现蓝牙挂死的原因?
447浏览 1评论
是否有办法通过CYW20835板的固件发送BLE HCI命令?
420浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 07:10 , Processed in 0.649359 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号