串口超级终端端可以正常接收但串口读取不到发送的数据是为什么

人人小组 - 单片机串口接收数据问题
单片机串口接收数据问题
尝试了单片机串口接收数据并在LCD上显示的实验,但目前只能做到在超级终端发送一个字符可以在LCD上显示。程序中有语句 b=SBUF 是将接收到的数据赋值到变量b上,之后显示b即可。但是我想知道如何接收整个字符串的方法,之后显示字符串即可,而不是一个一个发送。举个例子说明在串口调试助手的发送区输入'1'点击发送,SBUF='1',LCD上显示1在发送区输入"123"点击发送,我个人认为SBUF或是哪个寄存器是收到了"123",但由于b=SBUF赋值后LCD上显示的还是1我想知道"23"存到哪了,或怎样得到字符串"123"望高手指点
可不可以定义一个数组来放你的字符串,当字符不为&\0&的时候就一直发,while(a[i]!='\0'){sbuf=a[i];while(!TI);i++;}?
回复赵双?&●(2楼):我试过貌似,但出不来。问题还是我不能确定那字符串存到哪去了,我再试试
单片机串口一般都是8位的,你给再多字符串,它都是一次发送8位,TI置1后就发完,你再将TI清零继续发下一个字符(8位)
回复单良(楼主):我知道,要大很多字才能解释清楚,在线留QQ?
回复赵双?&●(4楼):对,我也是刚了解到,再多也是一个字节一个字节发,想错了,改换别的方法了,谢了
回复吴凤君(5楼):谢谢了,改用别的方法了,开始理解错了,以为是一个字符串整体发送过去,其实还是1个1个发的
回复单良(7楼):恩,串口也是一个个收,存在数组,带字库液晶显示也是一个个显示
貌似不能用数组,用了数组也不行。数据的接收是一个字符一个字符的形式的。
回复吴凤君(4楼):凤君,能加下我Q吗?(),有些程序问题想问下你,谢谢了!
为了保证您的体验,小组智能反垃圾系统自动清除了部分广告楼层,如有疑问请看
科技热点话题
全站热门话题
同类热门小组推荐
北京千橡网景科技发展有限公司:
文网文[号··京公网安备号·甲测资字·文化部监督电子邮箱:wlwh@·
文明办网文明上网举报电话: 举报邮箱:admin1@&&&&&&&&&&&&
密码必须由6-20个字符组成
请输入验证码[MFC]关于用串口接收数据包的纠结-中国学网-中国IT综合门户网站
> [MFC]关于用串口接收数据包的纠结
[MFC]关于用串口接收数据包的纠结
转载 编辑:李强
为了帮助网友解决“[MFC]关于用串口接收数据包的纠结”相关的问题,中国学网通过互联网对“[MFC]关于用串口接收数据包的纠结”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:[MFC]关于用串口接收数据包的纠结,具体解决方案如下:解决方案1:这是一个常用的包格式&包头2Bytes&&数据长度2bytes&&数据长度2bytes&&包数据N珐罚粹核诔姑达太惮咖 bytes&&数据校验 1byte&&包尾1 byte&规则:现在我负责接收Client 发送过来的数据,我使用的是OVERLAPPED来控制数据接收,也就是每当数据有数据的时候就立刻返回。但是我我每次接收到的数据,每次都是不同的长度。导致了,比如N Byte数据,我花了123次来接收。1.我想先把接收到的数据放入一个缓冲区,但是我根本就不知道这Nbytes数据什么时候接收。。2.放入缓冲区的数据,我不知道这个数据是否包含了上一个包的部分内容,或者下一个包的部分内容解决方案2:最可怕的是,这个缓冲区根本就不是一个完整的包解决方案3:珐罚粹核诔姑达太惮咖你不是一直在那里侦听吗?先收2个字节,如果不是包头就丢弃,直到接收到包头。再收4byte的数据长度,得到整个包有大,然后创建个相同大小的buff再去收,如果特别大,就多次接收,按包头给你的数据长度接收,一个字节都不多收。接收完成的数据单独保存。 然后再取下一个包。解决方案4:谢谢!通过对数据库的索引,我们还为您准备了:问:使用MSComm控件串口接收数据,如何接受正确的一串数据,SetRThreshold(a...答:使用MSComm控件串口接收数据,一般设置成SetRThreshold(1); //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 并且串口每次接收到的数据个数是不确定的,如果你自己确定需要接收到多少个数据的话,就好办了...===========================================问:我使用protues仿真,在单片机接收到我发送的数据后,电路上的灯会亮,并...答:UpdateData(TRUE); 另外,我给你一个获取数据更好理解的,工作量更少的办法: COleSafeArray dataG CByteA dataGet = m_comCtrlDlg.GetCommCtrl().GetInput(); //读缓冲区 // DWORD len = dataGet.GetOneDimSize(); // 这里获取长度...===========================================问:通过串口接收到一些数据,比如“@00RR*\r”,我想取出其中的0459...答:"0459"在字符串中位置固定吗?固定的话,你收到数据,直接截取这一部分,然后字符串转换成十六进制===========================================问:我想实现如下功能:外面有两个测量仪,串口号分别是com1和com2,它们一...答:网上有很多线程的串口通讯类,随便下一个都能用。 自己写一个也可已,就是CreateFile,WriteFile和ReadFile三个API为主。 百度搜"CSerialPort" 要轮流读要看你的测量仪的通讯方式,如果是轮询方式,那你给a发指令,读a回复,再给b发指令,再读b的...===========================================问:有一个传感器可以通过串口线将数据发送到本机上,在本机上用超级终端打...答:关于传感器发送的数据格式,你得找这个传感器的官网,看他们的说明书,不同的牌子,方式是不一样的。 MFC写串口程序,给你个链接,你自己去下载: http://download.csdn.net/detail/besidemyself/2772846; 这个是用API写的,操作有点繁琐,但是...===========================================问:想用MFC做一个串口通信程序, 用的是MSComm控件, 可以发送数据, 但是onCo...答:最好用线程来接受程序 static UINT RevThreadProc2(LPVOID pParam) { HANDLEh_gE DWORDdwBytesR OVERLAPPEDO BOOL bReadStatus = FALSE; dwBytesRead = 0; //MessageBox("abc"); memset(&Overlapped,0,sizeof(OVERLAPPED)); ...===========================================问:情况是这样的,程序最后需要用Release发布,在其他电脑上用,所以希望大...答:使用CreateFile方式是很好的方法.===========================================问:我想编一个基于对话框的程序comsendrecv.exe,与串口调试助手之间进行通...答:你在你的串口类SerialPort里面加一个线程函数或者回调函数private函数: static DWORD WINAPI ReceiveData(LPVOID lpParam); //线程函数 static WORD ProcessReceiveData(void* data); void ProcessData(DWORD (*Func)(void*) ); //回调函...=========================================== 和在12864上画不一样吗?先记录下所化的点,当一条曲线画完时,再画第二条曲线之前,把刚才那条曲线再画一遍,只是这一遍画的时候,将画笔的颜色和背景的颜色设置为相同;===========================================串口是独占模式的,如果一个串口(比如COM1)被一个软件打开,其它的软件就不能再打开该端口。 如果你希望在你的软件与串口通信时,用其它的软件监控查看串口的数据,应该...===========================================可以用 mscomm 控件 推荐看书 Visual C++_Turbo C串口通信编程实践===========================================可以肯定的说,一个应用程序申请的端口只能供其自身使用。根据你标题信息来看,要注意你在程序退出的时候是否释放申请的端口资源。if 串口打开 { 串口关闭 }===========================================进制问题,看我的例子 str1.Format("%2x",rxdata[20]); int d1; sscanf(str1,"%x",&d1); d1=d1*165; str1.Format("%d",d...===========================================可以,几个串口都可以。 不过,最好启用多线程,每个线程监控一个串口。在一个线程里面打开多个端口并监控会有问题。===========================================关于"构造函数没有返回值", 请注意: m_mscomm.put_Output调用的参数不是COleVariant的返回值, 而是一个COleVariant类的实例。这样,m_mscomm.put_Output函数中,可以调...===========================================0x31,'1',49都是一样的啊 假设用x存储数据了,你要显示成49,那就 (int)x 啊,或者 char temp[20]; sprintf(temp,"%d",x); 或者你如果有使用MFC编程,则 DDX_Text(pDX, ID...===========================================可以 用 MSComm 控件推荐 龚建伟的 书Visual C++_Turbo C串口通信编程实践有 pdf 电子文档找不到可以联系===========================================CByteA//发送的数据 hexdata.Add(0x02 ); hexdata.Add(0x00); hexdata.Add(0x18); hexdata.Add(0x07); hexdata.Add(0xCB); hexdata.Add(0xFF); ...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助串行口能发送数据,但读取不到
[问题点数:20分,结帖人tothehell]
串行口能发送数据,但读取不到
[问题点数:20分,结帖人tothehell]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2006年11月 VB大版内专家分月排行榜第二
2008年8月 VB大版内专家分月排行榜第三2008年7月 VB大版内专家分月排行榜第三
2006年11月 VB大版内专家分月排行榜第二
2008年8月 VB大版内专家分月排行榜第三2008年7月 VB大版内专家分月排行榜第三
2006年11月 VB大版内专家分月排行榜第二
2008年8月 VB大版内专家分月排行榜第三2008年7月 VB大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。21ic官方微信
后使用快捷导航没有帐号?
查看: 1343|回复: 10
超级终端收不到数据!!!!SSCOM32却一切正常?
&&已结帖(20)
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
利用SSCOM32以及串口调试助手收发串口数据正常,利用超级终端却收不到数据是怎么回事儿啊?SecureCRT这个也收不到数据&&请问有人知道这个怎么解决吗?
能用闲谈的功夫,教会在乡间的农夫微积分的人,那才是真正的数学大师。
主题帖子积分
主题帖子积分
专家等级:结帖率:95%打赏:1.10受赏:0.70
主题帖子积分
波特率相关设置一样吗?
昵称:&&如果觉得我发的帖子和回复对您有帮助,请打赏!
欢迎进入& && &21ic TI技术交流群:
主题帖子积分
高级技术员, 积分 658, 距离下一级还需 342 积分
高级技术员, 积分 658, 距离下一级还需 342 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级技术员, 积分 658, 距离下一级还需 342 积分
高级技术员, 积分 658, 距离下一级还需 342 积分
应该是你设置的问题,SSCOM32和串口调试助手只是单纯的串口协议收发,你把超级终端和SecureCRT里面的数据流控制关掉试试
永远相信美好的事情即将发生
--欢迎加入单片机与嵌入式技术交流群 ~~
主题帖子积分
中级技术员, 积分 107, 距离下一级还需 193 积分
中级技术员, 积分 107, 距离下一级还需 193 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
中级技术员, 积分 107, 距离下一级还需 193 积分
中级技术员, 积分 107, 距离下一级还需 193 积分
1、流控制;
2、二进制显示实时;
顺便问一句,signature在哪里设置的呢?
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
dirtwillfly 发表于
波特率相关设置一样吗?
这个当然~这种低级错误还是不会换的,而且更诡异的是在STC单片机ISP下载软件“STC_ISP_V486”自带的串口调试助手在我每次更改波特率的时候会有数据出现。反正就是在sscom32 和串口调试助手上一切正常,在另外一个网上下的不知名软件 也是正常的。超级终端就是不行....可是我把程序发给其他朋友在他们的超级终端上又可以
能用闲谈的功夫,教会在乡间的农夫微积分的人,那才是真正的数学大师。
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
rtgchym 发表于
应该是你设置的问题,SSCOM32和串口调试助手只是单纯的串口协议收发,你把超级终端和SecureCRT里面的数据流 ...
关掉了的 还是不行
能用闲谈的功夫,教会在乡间的农夫微积分的人,那才是真正的数学大师。
主题帖子积分
主题帖子积分
专家等级:结帖率:95%打赏:1.10受赏:0.70
主题帖子积分
nelsonfung 发表于
这个当然~这种低级错误还是不会换的,而且更诡异的是在STC单片机ISP下载软件“STC_ISP_V486”自带的串口 ...
昵称:&&如果觉得我发的帖子和回复对您有帮助,请打赏!
欢迎进入& && &21ic TI技术交流群:
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
dirtwillfly 发表于
是的啊 ,我现在着实没辙了~ 循环发送 超级终端又能收到数据
能用闲谈的功夫,教会在乡间的农夫微积分的人,那才是真正的数学大师。
主题帖子积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
高级工程师, 积分 7950, 距离下一级还需 50 积分
这个问题&&我也比较奇怪& &是不是那个循环出了问题& &楼主& &这个&&有可能的
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
主题帖子积分
专家等级:结帖率:75%
主题帖子积分
中级技术员, 积分 240, 距离下一级还需 60 积分
中级技术员, 积分 240, 距离下一级还需 60 积分
cjhk 发表于
这个问题&&我也比较奇怪& &是不是那个循环出了问题& &楼主& &这个&&有可能的
没有啊,就初始化出来就不行,每次复位都能正确的发送到sscom32上显示的 ,结果把sscom32换超级终端复位就不行& & 如果把前面的内容加一个循环发的话,超级终端就能收到循环发的内容了
能用闲谈的功夫,教会在乡间的农夫微积分的人,那才是真正的数学大师。
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 6, 距离下一级还需 44 积分
实习生, 积分 6, 距离下一级还需 44 积分
你的串口是用usb转的吗,试着把usb的屏蔽线和地线连起来看看。
技术高手奖章
人才类勋章
时间类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
技术奇才奖章
人才类勋章
甘甜之泉水
发帖类勋章
技术新星奖章
人才类勋章
奔腾之江水
发帖类勋章
无冕之王奖章
等级类勋章
热门推荐 /2

我要回帖

更多关于 超级终端 win7 的文章

 

随机推荐