比如我理论上从一个指令的发送到接受是10毫秒,但是真的是10毫秒吗?、?,如果WIndows多任务处理机制这个串口通信的传输到底影响多大?欢迎详细解答
解决方案 »
- 非常奇怪关于MDI程序子窗体菜单列表的问题
- 求算法,有点难,高手请进.
- 我有个关于fastreport报表的问题向大家请教!!!
- 有十个EDIT控件(edit1,edit2...edit10),现在想用循环对其text赋值,怎么实现?
- 我的电脑上安装了delphi7,打开时出现“应用程序正常初始化(0xc000005)失败”,请大虾帮忙。
- 关于Database控件的属性
- 请问如何在Query中用SQL语句的到当前时间?谢谢指教
- 高分求救!如何让 TTrackBar 透明或者自画?
- 请问在Midas程序中,客户端服务器怎样调用服务器端的函数
- 日期型数值保存
- 关于操作Excel的问题(问题有些特殊)
- 用delphi调用vc写的dll出错?
就算是单任务的系统,每种通讯方式的传输速度也有上限吧
在虚拟仪器、实验室数据分析、医疗设备、记录仪等诸多研究和应用领域中,对数据的要求很高,一方面数据容量较大,如几百兆甚至几仟兆,另一方面采样速度都较高,如100KHz、200KHz、300KHz等,更重要是要求在高速长时间的采集数据过程中,不能丢掉一个点,必须全部存入硬盘,同时还要进行一些点的抽样分析,这在DOS环境中实现起来就有较大的难度,就更别说在Windows这样的多任务环境中(对于Windows多任务机制请参阅有关Windows手册)。大家知道Windows的各应用程序总是不断地被任务调度器调度,循环处在睡眠、排队、就绪、触发运行等状态中。Win95任务之间的切换密度至少大于1毫秒,那么如果要以100KHz频率采样(即每10微秒就得传输一个数据),很显然有大量的数据在传输中由于任务之间的切换而被丢失掉。这就是基于Windows客户程序在传统模式下,高速连续采集传输数据时所具有的局限性。为了突破这种局限性,就得采用别的办法,如非客户程序、内核程序、驱动程序(如VxD、微代码)等,再加上我们所掌握的新技术,如内存映射、直接写盘技术以及独有的设计思想便可以很好的解决这些问题。我现在也不知道我怎么样做到高速采集,用普通的方式,老丢失数据啊
不过你说的59个字符,那是你的程序每次接收的数据量,是一个“逻辑量”。
而串行通讯是一位一位传输的,8K波特率的话每秒大约传输800~900字节,全双工完全可以满足你的需要。软件上处理发送、接收肯定也要时间,windows多任务肯定也有影响(使你的程序周期性失去控制)。
如果你的传输数据量不大的话,应该降低波特率的设置,没必要115200,波特率设得越高,多任务切换多通讯的影响就越大。
当然有关系了。
你的串行通讯是否在115.2K下持续传输数据?
如果数据量并没有这么大,可能的话,把波特率设置降低,比如平均1秒只传输几百字节的数据,那么设置为8K或者16K波特率就可以了,这样中断处理上的时间就降下来了。
半双工也没关系,只是有效传输率降低了一半而已,一方发数据的时候另一方只能收。
谢谢DelphiGuy兄这么热心的回复啊,呵呵
1000/1.5*(18+23)*(7+1+1)=246000显然115200波特率半双工是满足不了的(就是全双工也满足不了)。
尽管16550支持230k和460k波特率,但这是“非标准”的,不是在所有主板上都支持(跟时钟有关),而且也不能保证所有的串行通讯设备用的都是16550uart兼容的芯片。12M/S的速度,当然是没问题的了,但是你又说“硬件不支持USB总线协议”,那怎么办呢?485支持吗?红外?
既然你的设备支持PROFIBUS总线协议,那应该可以用RS-485通讯,不过PC上一般没有485支持,需要另配板卡,驱动也就有了。:)