多张SD卡可不可以放在同一个小小米盒子3 删SD卡内容里? 放在一起重叠起来。

查看: 5575|回复: 7|关注: 0
怎样读从串口发出的十六进制数据
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
:Q 我要发给串口一个十六进制的数据,然后串口再回给我一个十六进制的数据,我要读取它,为什么fscanf(s,'%x')不好用呀?是不是发命令和读取只能是以字符形式进行的?
<h1 style="color:# 麦片财富积分
我也想很想知道这个问题的答案,转换成字符是比较麻烦的
<h1 style="color:# 麦片财富积分
我知道解决方法了
用fwrite和fread。
比如fwrite(s,255)外面的设备收到FF。
如果外面发FF,用fread(s,1)读得255。其中1是读的数据数。
当中就是要自己转换一下。
<h1 style="color:# 麦片财富积分
没有不转换的吗?
比如 fwrite(fids,[104 00 05 00 01 00 16 00 00 00 22],'uchar');
写成fwrite(fids,[68 00 05 00 01 00 0f 00 00 00 16],‘????’);
就是问号那边表示成16进制&&不知有没有?
<h1 style="color:# 麦片财富积分
不知楼主解决了没?如果解决了,可以总结一下,供M友们共同享受下
<h1 style="color:# 麦片财富积分
我已经按照的方法试了一下:
s=serial('COM2');
set(s,'BaudRate',9600);
set(s,'timeout',1);
set(s,'InputBufferSize',1024);
set(s,'OutputBufferSize',1024);
set(s,'Parity','none');
set(s,'DataBits',8);
set(s,'StopBits',1);
fwrite(s,'');        %其中''是我十六进制'AADB'转换过来的十进制
idn=fread(s,1)
fclose(s);
delete(s);
Warning: The specified amount of data was not returned within the Timeout period.
& &Empty matrix: 1-by-0
 但是出现了上面的警告!请问楼主有没有出现过类似的问题?
我的QQ:314575265,谢谢
<h1 style="color:# 麦片财富积分
求高手解答啊
串口助手以十六进制接收,可是接收到的数据的以ascll码显示的,求各位高手解答一下。
<h1 style="color:# 麦片财富积分
就是得注意字符型的十六进制“FF”与数值型的十六进制FF的区别,fread在这一点上比fscanf更容易控制。
站长推荐 /3
利用MATLAB进行机器学习
Powered by串口的Hex/AscII发送与显示
时间: 20:50:05
&&&& 阅读:6846
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&都要大四了还搞不清这个概念也真是丢脸。
首先,底层的数据传输都是字节流,所以不管选择什么方式,都会被分解为一个一个的字节。
1选择Hex发送就代表你要发送的内容是纯数字,由程序完成String到Int再到Byte的转化。所以你应该保证每个你要发送的数都是两位的,如果是7就应该写07,因为程序会每两位每两位地读。如果你选择了Hex发送,而输入的又是字符,比如你写了ab,那么就会被程序读为16进制的AB。这就是不同的概念了,无论你选择什么方式显示都不能得到原来的ab了。
2选择ASCII发送就代表你要发送的是字符串,这时候程序就会一位一位地读,比如你写了1234,在字节流中传递的就是123对应的ASCII码,31,32,33,34(十六进制的)。比较而言,在Hex发送模式下,写了1234,会被发送的就是12,34,如果是那就是01,02,03,04。这个时候,你写ab就会发送相应的ASCII码61,62,其他字符同理。
到这里,数据已经发送出去了,接下来就是显示的问题。是显示模式,不是解析,不存在解析。
3选择Hex显示就是把字节转化为16进制整型,你收到的是12,34,就显示为12,34,你收到31,32,33,34,也显示为31,32,33,34,如果收到AB呢,那也是AB。
4选择ASCII显示呢,就会把你接收到的十六进制转化为对应的字符,比如你收到了31,就会显示为1。这种模式下可能会出现乱码,原因就是ASCII码只从0-7f。如果你在十六进制发送模式下发送了字符,比如发送了ab,那你就会收到AB,这个并没有ASCII码对应的字符。
所以在Hex模式下如果输入字符,是无论如何接收不到正确的数据的,其他方式那就随意了。重要的是,方式的选择改变的不是数据本身,而是数据的表现形式。
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:/jasmine1996/p/4678599.html
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!2010年11月 总版技术专家分月排行榜第二2010年9月 总版技术专家分月排行榜第二2010年8月 总版技术专家分月排行榜第二
2010年7月 总版技术专家分月排行榜第三
2010年11月 总版技术专家分月排行榜第二2010年9月 总版技术专家分月排行榜第二2010年8月 总版技术专家分月排行榜第二
2010年7月 总版技术专家分月排行榜第三
2010年11月 总版技术专家分月排行榜第二2010年9月 总版技术专家分月排行榜第二2010年8月 总版技术专家分月排行榜第二
2010年7月 总版技术专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。> VB串行口传输16进制的数,如何正常接受并显示啊
VB串行口传输16进制的数,如何正常接受并显示啊
tingying & &
发布时间: & &
浏览:12 & &
回复:8 & &
悬赏:0.0希赛币
VB串行口传输16进制的数,怎么正常接受并显示啊?Dim rece As Bytereceive = MSComm1.Input结果是类型不匹配。有些列子(虽然不知道能不能用),写了很多。连BulidCommDCB都出来了。不知道是不是要这么写。frmMain.ctrMSComm.InputMode = comInputModeBinary其他单片机的程序写的很简单的样子。这个数据是一个字节,十六位的。数据是“CC ”变成了“烫”其他现成的程序用Hex可以正常显示。
  VB code  Dim rece As Byte
receive = MSComm1.Input
msgbox hex(receive)
'16进制转换函数hex
tingzaiyifang & &
00:49:31 & &
& & (0)(0)引用  VB code  Dim receive As Varint
dim intP as integer
dim bytR(0 to 100) as byte
MSCOMM1.inputLen
receive = MSComm1.Input
bytR(intP)=receive(0)
tingzhong & &
00:49:31 & &
& & (0)(0)引用探讨主要是A-F这几个字母不被Byte类型识别,一直显示类型不匹配。
huangliang126 & &
00:49:31 & &
& & (0)(0)引用  VB code  Dim rece() As Byte
Dim tmp As Variant
tmp = MSComm1.Input
rece = tmp
huangliangming & &
00:49:31 & &
& & (0)(0)引用探讨个人有个想法觉得是arm板传输的数据是8位的(西文),但是新的数据接收方式都是16位(全部),所以十六位数据传输时,最后变成了中文乱码。在找各种语句,函数可以进行转换。比如说限制读取位数。虽然有转换的函数StrConv,但那个太慢了,而且影响数据传输的流畅性。以上为个人观点,但是还在摸索没有结论。VB里,没找到现成的十六进制完美转换十进制的方式。
huangliang112 & &
00:49:31 & &
& & (0)(0)引用探讨恩,大家来讨论的说。其实当初学VB的时候就很奇怪,有十进制转换十六的例子,却没有看到过十六转十进制的例子。不过确实存在各种各样的方法,只是其中简洁的很难得
huangliangfeng & &
00:49:31 & &
& & (0)(0)引用探讨求教一下,VB的串行口控件的可以修改的最大波特率是多少?可不可以达到921600?huanglifeng & &
00:49:31 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&

我要回帖

更多关于 小米盒子3 删SD卡内容 的文章

 

随机推荐