上位机和下位机发数太快,下位机响应返回会不会丢帧

Imports System.Threading
在想调用的地方用VB.NET code
Thread.Sleep(100)'单位ms
但我试验了一下,如果用Sleep的时间有阻塞调用(比如用MessageBox.Show(&!&)却不点击确定按钮),则程序流程很不好。不建议使用Sleep。现在,我还没看懂你希望的流程。不过我觉得新开一个Timer就差不多了。
昵称: zhzhangjing &时间:
昵称: wuyazhe &时间:
昵称: why3213 &时间:
昵称: wuyazhe &时间:
该回复于 21:38:26被版主删除
#11楼 得分:0回复于: 21:05:58
你好,李逍遥师傅,能有你的Q吗?我想和你单独的谈谈,这个程序我比较着急调试,谢谢啊
昵称: myhope88 &时间:
昵称: why3213 &时间:
昵称: zdingyun &时间:
据我所知,VB的定时器定时精度在55ms,LZ如何能每用定时器每隔10毫秒采集一次串口数据.
昵称: UserInfo &时间:
昵称: zdingyun &时间:
昵称: why3213 &时间:
昵称: why3213 &时间:
昵称: ztzname &时间:
昵称: sp1234 &时间:
昵称: wph1234 &时间:
昵称: robinzlw &时间:
昵称: shayne0123 &时间:
昵称: yanlongwuhui &时间:
昵称: zouguo2009 &时间:
昵称: mosenyou8 &时间:
昵称: wph1234 &时间:
我现在也在做类似的程序,DataReceived自己也是一个监听线程。用for ...next的话不能保证延迟的时间。关于延迟的好办法 坐等lx高人
昵称: tongfeng1981 &时间:
昵称: scholar__fly &时间:上位机是如何采集下位机发送的串口数据的???_百度知道
上位机是如何采集下位机发送的串口数据的???
下位机是西门子s7-200PLC,下位机要采集4路模拟量数据,并经各种转换后,在上位机上自动显示这四路数据,上位机用的是VC++的MFC编写的,上位机和下位机用的是RS485通讯的,只用到一个COM口(假设为COM3)。
我想知道的是,下位机是如何发送这四个数据,是在一个...
我有更好的答案
下位机(比如单片机)通过串口线(比如RS232)发送数据给上位机(PC),下位机部分主要程序就是将数据按照一定的封装格式打包好数据,然后配置好串口相关参数(比如波特率,校验位什么的),上位机需要有软件将串口获得的数据再根据封装格式还原成你需要的数值,这就是整个过程了。
采纳率:35%
来自团队:
RS485总线通信,上位机通过主机轮询的方式采集下位机信号!
也就是说下位机不能够主动发送信号,而是上未机通过地址依次读取这四路的报文并打印显示出来;每次通信都是有上位机发起的握手信号,下位机接收到信息后判断是不是自己信息,如果是则发送数据
不是四个COM口,总共只有一个COM口,是从PLC出来接到PC机上的。我知道如果是多个串口(也就是多个PLC,每个PLC采集一路模拟量)的话,上位机可以通过串口的地址依次读取每个串口的数据,也就是你说的轮询啊,握手啊之类的过程。但是我是一个COM口(一个PLC)传送四个变量(采集四路数据),这种情况下,上位机怎么区分这四个变量(假设有两个温度、两个压力的数据)啊?
举个例子:温度传感器T1,T2,压力传感器P1,P2,分别给T1,T2,P1,P2赋予地址1,2,3,4;那么把四个传感器挂载在485总线上,我的PC机只要通过一个COM分别发送信息去读取地址1,2,3,4的内容就可以了。比如我现在的上位机发送信息读取地址2号的内容,T1,T2,P1,P2都会接收到上位机发送过来的信息,通过判断信息发现地址为2那么T1,P1,P2直接把数据包丢弃,只有T2的地址匹配然后T2发送数据给上位机;上位机通过地址1,2,3,4轮询这四个设备,因为速度快所以看起来是4个设备是同时收发数据
本回答被提问者采纳
也可以是四个数据<a href="http,一般是单个数据.baidu.com/view/a00ce0c36137ee06eff9180d根据通讯协议://wenku
为您推荐:
其他类似问题
下位机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。跪求大神指教:STC15作为下位机,给上位机发送0到9数字的编辑。上位机是Labview【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:145,346贴子:
跪求大神指教:STC15作为下位机,给上位机发送0到9数字的收藏
跪求大神指教:STC15作为下位机,给上位机发送0到9数字的编辑。上位机是Labview
为用户提供各种低成本,低功耗,低能耗,功能强的微控制器解决方案.恩智浦微控制器,高性能,设计新颖,性能稳定,价格超低,欲购从速,欢迎垂询!
数字编辑是什么
求各位大神指教STC15作为下位机,给上位机发送0到9数字的编程。上位机是Labview
没听懂啥意思,是一秒发一个数还是一下子都发完,
#include &reg52.h&
//此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;
//对数据类型进行声明定义typedef unsigned char u8;#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;u8 KeyV //用来存放读取到的键值u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值
void UsartInit(){ SCON=0X50;
//设置为工作方式1 TMOD=0X20;
//设置计数器工作方式2 PCON=0X80;
//波特率加倍 TH1=0XF3;
//计数器初始值设置,注意波特率是4800的 TL1=0XF3; ES=1;
//打开接收中断 EA=1;
//打开总中断 TR1=1;
//打开计数器}
void Usart() interrupt 4 { //u8 receiveD //receiveData=SBUF;//出去接收到的数据 //RI = 0;//清除接收中断标志位 //SBUF=receiveD//将接收到的数据放入到发送寄存器 //while(!TI);
//等待发送数据完成 //TI=0;
//清除发送完成标志位}
/******************************************************************************** 函 数 名
: delay* 函数功能
: 延时函数,i=1时,大约延时10us*******************************************************************************/void delay(u16 i){ while(i--); }/******************************************************************************** 函 数 名
: KeyDown* 函数功能
: 检测有按键按下并读取键值* 输
: 无*******************************************************************************/void KeyDown(void){ char a=0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f)//读取按键是否按下 {
delay(1000);//延时10ms进行消抖
if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
GPIO_KEY=0X0F;
switch(GPIO_KEY)
case(0X07): KeyValue=0;
case(0X0b): KeyValue=1;
case(0X0d): KeyValue=2;
case(0X0e): KeyValue=3;
GPIO_KEY=0XF0;
switch(GPIO_KEY)
case(0X70): KeyValue=KeyV
case(0Xb0): KeyValue=KeyValue+4;
case(0Xd0): KeyValue=KeyValue+8;
case(0Xe0): KeyValue=KeyValue+12;
while((a&50)&&(GPIO_KEY!=0xf0))
//检测按键松手检测
delay(1000);
while(!TI);
} }}/******************************************************************************** 函 数 名
: main* 函数功能
: 主函数* 输
: 无*******************************************************************************/void main(){
LSA=0; //给一个数码管提供位选 LSB=0; LSC=0;
UsartInit(); while(1) {
KeyDown();
//按键判断函数
GPIO_DIG=smgduan[KeyValue];
}矩阵键盘,输出00-0F的,波特率4800
登录百度帐号推荐应用STM32上位机通过串口发送大数据返回接收异常 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 2630|回复: 12
STM32上位机通过串口发送大数据返回接收异常
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
通过串口助手发送一串很长的数据如下上传的图所示,然后下位机原样返回串口助手发送的数据,当发送的字符串超过62个左右时,返回接收的数据在固定位置出现异常,如下图所示。发送的数据不超过62个时,发送的数据与返回数据没有异常,
1.串口中断接收的程序:
void USART1_IRQHandler(void)& && && && && & & & & &
& & & & & & & & & & & & char Res1=0; & & & && & //(USART_GetFlagStatus)
& & & & & & & & & & & &
& & & &&&if(USART_GetFlagStatus(USART1, USART_FLAG_ORE ) ==SET)//数据过载错误 。USART_IT_ORE & & & &&&USART_GetFlagStatus
& & & & & & & & {
& & & & & & & && &&&USART_ClearFlag(USART1, USART_FLAG_ORE );
& & & & & & & & & & & & USART_ReceiveData(USART1);
& & & & & & & & //& & & & Res1 =USART_ReceiveData(USART1);
& & & & & & & & //& & & & Uart1_Buf[First_Int1] = Res1;&&& & & && &//将接收到的字符串存到缓存中& & & & & & & &
& & & & & & & & //& & & & First_Int1++;
& & & & & & & & }
& & & &&&if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
& & & && & {
& & & & & & & && &&&USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
& & & & & & & & & & & & Res1 =USART_ReceiveData(USART1);&&
& & & & & & & & & & & & Uart1_Buf[First_Int1] = Res1;&&& & & && &//将接收到的字符串存到缓存中& & & & & & & &
& & & & & & & & & & & & First_Int1++;& && && && && & & & & & & & & & & & & & //缓存指针向后移动
& & & & & & & & }
& & & &&&if(First_Int1 & Buf1_Max )& && & & & & & & & & & //如果缓存满,将缓存指针指向缓存的首地址
& & & & & & & & {
& & & & & & & & & & & & First_Int1 = 0;
& & & & & & & & }& &
& & & & & & & &&&
2.接收到上位机数据后原样输出的程序:
& & & & if(Find1(&901A905300&))& &//901A905300检查电话卡属于哪个网络
& & & &&&{& & & && &
& & & && &UART1_SendString(Uart1_Buf);
& && && & }
**************************************************************************************************
***************************************************************************************************
希望版主能帮忙看看。。这问题困扰了我两个多星期,希望大伙能顶起。。
(177.49 KB, 下载次数: 2)
14:29 上传
红色框框位异常的位置
在线时间518 小时
ST金币2972
该用户从未签到主题帖子好友
找到Windos系统中的串口设备,设置Buffer长度.
在线时间922 小时
该用户从未签到主题帖子好友
本帖最后由 Paderboy 于
15:31 编辑
换个串口软件试试
我这有个,你试试看。。。
(687.84 KB, 下载次数: 33)
15:31 上传
点击文件名下载附件
在线时间149 小时
该用户从未签到主题帖子好友
金牌会员, 积分 2217, 距离下一级还需 2783 积分
金牌会员, 积分 2217, 距离下一级还需 2783 积分
每个字符回传前加入延时
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
找到Windos系统中的串口设备,设置Buffer长度.
怎么在Windos系统中的串口设备,设置Buffer长度啊?
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
换个串口软件试试
我这有个,你试试看。。。
你给的那个串口软件很好用,功能更及全,但是还是出现一样的问题哦。。不知如何是好,总感觉是在缓存出现问题,但不知道怎么解决。。
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
每个字符回传前加入延时
这个我试过,但是没用还是在固定位置出现错误,在第63个字符的位置出现异常,(字符超过63个字符时就出现错误了)
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
以上问题已经解决,原先是用IFIO的方式接收缓存的数据,不知道其占用很大的存空间和时间,超过一定的存贮量数据时会使接收返回数据出错。
正确接收程序:
void USART1_IRQHandler(void)& && && && && & & & & &
& &&&char Res1=0; & & & && & & & & & & & & & & & & &
& & & &&&if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
& & & && & {
& & & & & & & && &&&USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
& & & & & & & & & & & & Res1 =USART_ReceiveData(USART1);//缓存指针向后移动& && && && && &&&& & & & & & & & & & & &
& & & && && && &USART_SendData(USART1, Res1);
& && &&&& & & & while (!(USART1-&SR & USART_FLAG_TXE));
& & & & & & & & }& & & & & & & &&&
在线时间4 小时
该用户从未签到主题帖子好友
初级会员, 积分 57, 距离下一级还需 143 积分
初级会员, 积分 57, 距离下一级还需 143 积分
解决。。。。。。。。。。。。。。。。。。。。。。。。。
(74.18 KB, 下载次数: 0)
22:58 上传
在线时间922 小时
该用户从未签到主题帖子好友
解决就好。。
STMCU-Logo.png (21.38 KB, 下载次数: 0)
08:25 上传
STM32粉丝勋章Ⅳ
狂欢节专属(智多星)
STM32粉丝勋章Ⅲ
狂欢节专属(分享宝宝)
STM32粉丝勋章Ⅱ
狂欢节专属(研讨会问答)
STM32粉丝勋章Ⅰ
狂欢节专属(微信上墙)
站长推荐 /3
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于DSP的多通道数据采集系统研究.pdf 61页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
&#xe600;下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
基于DSP的多通道数据采集系统研究
你可能关注的文档:
··········
··········
数据采集广泛应用于信号检测、信号处理和仪器仪表等领域。随着微电子技
术和计算机技术的发展,数据采集技术向速度更高、通道更多方向发展,性能在
不断提高,功能也在不断增强。
在工作中,需要采集多路陀螺的信号进行分析。在此背景下,本文设计并实
现了一套多通道数据采集系统。该系统以 TMS320F2812DSP 为处理器,采用两片
AD7865 模数转换器采集八路陀螺信号,在 EPM1270 CPLD 的时序控制下,对八
路模拟信号进行采集、处理,并通过 422
串口传输到上位机软件进行波形显示及
首先,硬件方面以 TMS320F2812 为核心,采用扩展两片 4 通道 14 位 AD 芯
片,实现高精度的 A/D 转换。在逻辑上以 Altera 公司的 EPM1270 为核心,实现
A/D 采集及读写信号的时序控制。
其次,下位机软件采用 C 语言完成,实现数据采集及传输。上位机软件采用
Borland 公司的可视化编程环境 Delphi 来完成人机交互界面。用于实现 DSP 与 PC
机的串口通信,可将数据保存到本地存储器中,能够进行 8 通道数据的实时显示
本系统所需硬件均采用成熟的芯片,这些芯片在工程中大量应用,价格相对
不高,能够实现所需的功能要求。
关键词:数据采集
acquisition
technology
detection,signal
processing,instrumentation
years,with
development
micro-electronics
technology,data
acquisition
techniques
development
speed,more
channels,the
performance
constantly improved,and the function is constantly enhanced.
At work,it is needed to collection signal of multi-channel
gyro for analysing.The
design and implement of a multi-channel data acquisition system are proposed in this
paper. We use TMS320F2812 DSP model as a
core processor ,two chips of AD7865
A/D converter to collect eight-channel fiber optical gyro signal,with the timing control
of EPM1270 CPLD,collect and process the analog signal,and then transmit the data via
422 port to upper computer for wave displaying and storing.
TMS320F2812
four-channel
converter.
Logically it is based on Altera company’s EPM1270 as the core.And it achieves the
A/D acquisition,
正在加载中,请稍后...

我要回帖

更多关于 上位机和下位机的区别 的文章

 

随机推荐