c#串口多线程数据读写问题 [问题点数:100分,结帖人zjz444]

Bbs1
本版专家分:44
结帖率 100%
Bbs6
本版专家分:5521
Blank
红花 2010年5月 C++ Builder大版内专家分月排行榜第一
2010年3月 C++ Builder大版内专家分月排行榜第一
2010年1月 C++ Builder大版内专家分月排行榜第一
Blank
黄花 2010年12月 C++ Builder大版内专家分月排行榜第二
2010年11月 C++ Builder大版内专家分月排行榜第二
2010年7月 C++ Builder大版内专家分月排行榜第二
2010年6月 C++ Builder大版内专家分月排行榜第二
2010年4月 C++ Builder大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C++ Builder大版内专家分月排行榜第三
2010年8月 C++ Builder大版内专家分月排行榜第三
2010年2月 C++ Builder大版内专家分月排行榜第三
2009年12月 C++ Builder大版内专家分月排行榜第三
Bbs1
本版专家分:44
Bbs1
本版专家分:44
Bbs8
本版专家分:32040
Blank
黄花 2010年3月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年4月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:44
Bbs5
本版专家分:2836
Bbs5
本版专家分:2836
Bbs1
本版专家分:39
Bbs1
本版专家分:0
串口数据读写问题
我要控制U盘<em>数据</em>的<em>读写</em>,只能从U盘读<em>数据</em>,可以删除U盘<em>数据</em>。不能往U盘写<em>数据</em>。请大家指点
C# SerialPort串口通信 线程问题
请问下大虾们,小弟遇到一个棘手的<em>问题</em>,我们有个项目是获取<em>串口</em>读卡器<em>数据</em>,然后进行操作,每次刷卡,<em>串口</em>事件就获取到<em>数据</em>,但是 现在发现 void sp_DataReceived(object sende
c#串口多线程接收数据
因为前段时间需要用到<em>串口</em>接收<em>数据</em>,且使用的<em>串口</em>号不确定,需采用<em>多线程</em>的方式来实现接收。 创建线程: Thread thread = null; for (int i = 0; i < PortNum; i++)//根据选择的<em>串口</em>号数量创建对应数量的线程 { thread = new Thread(Text_Ru
C#中用SerialPort类实现简单串口编程
C#中使用SerialPort类实现简单<em>串口</em>编程 .NET提供了SerialPort类进行<em>串口</em>通信,使用很简单,连我这个.NET新手也能很快上手.以下是从网上找到并自己修改后的参考代码:   使用SerialPort类的方法: 方法一: 首先要添加 using System.IO; using System.IO.Ports; 1...在类的内部定义SerialPort com
c#串口通信多线程
有谁有<em>多线程</em>的<em>串口</em>通信例子啊。。。。。对于线程不懂啊。。。老是界面卡死
C# 串口如何做到多线程收发?
<em>串口</em>的收发是两条线程,互不干扰,一边收一边发。上位机软件不好弄啊。
C#读写串口数据Demo
用C#实现<em>读写</em><em>串口</em><em>数据</em>。用于自动化界面和板卡、PLC等通讯
C#的串口读写问题
请问如何在<em>c#</em>中读取<em>串口</em>??有没有什么源码??
串口读写数据问题
我使用serialport.DataReceived事件处理收到的<em>数据</em>,rn但是有时我需要向<em>串口</em>写<em>数据</em>serialport.Write(),并且需要获得<em>串口</em>发回的确认信息。rn这个确认信息怎么读取?(<em>串口</em>发回的确认信息同时会引发了DataReceived的事件)rn如果serialport.Write()后使用serialport.Read()会出<em>问题</em>吗rn
关于多线程读写串口问题
谁能提供一个用API函数实现的例子,谢谢!
求助 多线程串口读写............
通讯方式:采用485总线主从应答式。pc机作为主机每隔4小时向各从机发送一次控制启动指令,系统每一次通信过程均由主机发起,从机在规定的时间间隔即0.5秒内应答,如在0.5秒内从机无应答,则主机应重新发起通信过程。如主机连续多次(10次)发起通信过程从机无应答,则主控软件则可认为该分机工作不正常,即可发出报警信息。rn rn由于还要牵扯大量从机<em>数据</em>上传处理,我采用<em>多线程</em>方式,专门建立一个工作者线程进行<em>串口</em>监视现在<em>问题</em>是我用哪个函数实现定时到后第一次发送<em>数据</em>后,判断有无接受<em>数据</em>,如何实现没接收到<em>数据</em>,后再重发?然后一直到10次或者最大时间到,如果接收<em>数据</em>正确成功,如何发送下一从机控制命令,求助给个思路或者函数,谢谢,我菜鸟rn
C#多线程操作同一个串口问题,求拍砖
用上位机读取一控制器参数,一个线程每隔1000ms读取一次<em>数据</em>在界面显示,另一个按钮不定时读取<em>数据</em>,操作的是电脑的同一个<em>串口</em>。现在出现的<em>问题</em>是:点击按钮有时不会收到<em>数据</em>,有时会使界面显示的<em>数据</em>也出现错
C# SerialPort 串口通信多线程问题
-
求教c#多线程操作串口的方法
-
C# 怎么同时打开两个串口
private void comm_DataReceived1(object sender, SerialDataReceivedEventArgs e) { int n = serialPort1.
C#基于事件驱动的多串口多线程串口
C#基于事件驱动的多<em>串口</em><em>多线程</em><em>串口</em>通讯软件架构设计
多线程串口读写
我在做一个<em>读写</em><em>串口</em>的程序,为了防止过多占用CPU,我就另开了一个线程专门<em>读写</em><em>串口</em>,通常情况下,另一端是不断地发送设备状态(9个字符),如果这端检查到文件则停止发送设备状态而发送文件,文件的发送是一帧72个字符。两者通过起始字符区别,代码如下:rnrnUINT CommProc(LVOID pParam)rnrn char ch;rnrn DWORD dRes;rnrn while ( 1 )rn rn dRes = WaitForSingleObject(g_hExit, 10);rn switch ( dRes )rn rn case WAIT_OBJECT_0:rn return 0;rn default:rn break; rn rnrn // 读取一个字符rn ch = sio_getch(g_nPort);rn if ( ch < 0 ) continue;rnrnrn switch ( ch )rn rn case 1:rn 读取8个字符,并发送消息在主窗体中显示;rn break;rn case 2:rn 接收文件;rn break;rn rn rnrnrnrnrnrn整个的循环大概就是这样,在我的计算机上运行倒是正常,换一台计算机竟然CPU的占用率忽高忽低,有时候是0,有时侯是100%,不知道怎么回事?
C#serialport串口读写数据问题
单片机向我发送十六进制的流<em>数据</em>,我怎么样读取并显示出原<em>数据</em>啊,比如单片机发送的是E9 E9 0A 0B 0C,我就想在textBox中显示出E9 E9 0A 0B 0C。代码如下:rnprivate void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)rn rn if (checkBox1.Checked)//是否用十六进制显示rn rn byte[] tempDate = new byte[serialPort1.BytesToRead];rn serialPort1.Read(tempDate, 0, serialPort1.BytesToRead);rn delegate1 receivedelegate1 = new delegate1(datareceive);rn ...rn this.Invoke(receivedelegate1);rn rn执行完Read()函数后我是否就把输入缓存区中的<em>数据</em>存到字节数组tempDate中了?我想要在textBox中显示<em>数据</em>是否要把字节数组中的<em>数据</em>转换成对应的十六进制字符?
关于串口读写数据问题
请教大家一个<em>串口</em><em>读写</em><em>数据</em>的<em>问题</em>,自己写的一个<em>串口</em>类CSerialPort,封装有OpenCom(),CloseCom();rnWriteCom();ReadCom()...等等方法,一个用在短信发送的GsmComm类,包括GsmInit(),GsmSendMsg()....等等方法,GsmInit()中调用了类CSerialPort的方法WriteCom()对MODEM进行初始化;通过ReadCom()读取返回<em>数据</em>判断初始化是否成功.rnrn现在我在一个窗口类CMyDlg中开一个线程监控<em>串口</em>,有返回<em>数据</em>的时候调用ReadCom()读取<em>数据</em>并输出到列表框。我在这个窗口类中直接调用CSerialPort的WriteCom(),<em>数据</em>接收没有<em>问题</em>。但我在窗口类调用GsmInit()的时候,线程就监控不到<em>串口</em>有<em>数据</em>返回。不知道<em>问题</em>出在哪里,请高手指教。rnrn在CMyDlg.cpp中通过以下方式调用CSerialPort的成员函数是对的,如rn--CMyDlg.cpp--rnCSerialPort SP; //全局对象rnBOOL CMyDlg::OnInitDialog()rnrn ......rn if(!SP.OpenCom("COM1", 9600, NOPARITY, 8, ONESTOPBIT)) rn MessageBox("<em>串口</em>打开失败");rn ......rnrnrnvoid CMyDlg::OnSend() rnrn.......rn SP.WriteCom("AT\r\n"); //发送AT指令rn.......rn线程监控到<em>串口</em>有接收<em>数据</em>,调用SP.ReadCom()读<em>数据</em>等等,打开<em>串口</em>成功,返回<em>数据</em>也是正确的rnrnrn在类GsmComm中成员函数也用到了CSerialPort的方法rn--GsmComm.cpp--rnCSerialPort SPort; //全局对象rnBOOL GsmComm::GsmInit()rnrn CString strAns;rn // 测试设备是否存在rn SPort.WriteCom("AT\r\n");rn Sleep(100);rn SPort.ReadCom(strAns);rn if (strAns.Find("OK")<0) return FALSE; rnrn return TRUE;rnrnrnrn如果我在CMyDlg.cpp中如下方法调用的话,<em>串口</em>打开成功,但写<em>数据</em>失败,没有<em>数据</em>返回rnCMyDlg.cpprnrnvoid CMyMDlg::OnSend() //发送按钮rnrn ......rn GsmComm gsmc;// [color=#0000FF]此定义为全局对象结果也是一样的,应该不是<em>问题</em>所在[/color]rn gsmc.GsmInit();//初始化MODEM(此处涉及了写<em>数据</em>和读<em>数据</em>的函数)rn .....rn 这样初始化不成功,请问那里错了,那个地方出<em>问题</em>了。rn[color=#FF0000]另外,在CMyDlg中调用GsmComm的成员函数,只要不涉及到读<em>串口</em>和写<em>串口</em>等<em>串口</em>相关操作的,调用后的结果都是rn正确的,请教![/color]rnrn
rs232 串口读写数据问题
我对下位机是一点也不懂啊,现在和一个同事合作一个最简单的<em>串口</em>通信程序。rn上位机发送一个指令(假设是'a'这个byte)下位机回复一个字节表示温度。rnrn那么 WriteFile 和ReadFile的时候是不是和TCP类似,buffer里面只有用户<em>数据</em>?
C# ISP 串口调试工具的开发(二)—— 多线程处理
C# ISP <em>串口</em>调试工具的开发(二)—— <em>多线程</em>处理前言<em>数据</em>接收使用事件接收使用线程接收<em>数据</em>发送跨线程操作 前言 上一篇文章《ISP <em>串口</em>调试工具的开发(一)》介绍了如何实现一个简单具有<em>读写</em>功能的<em>串口</em>调试工具,这篇文章会介绍进阶版的<em>串口</em>调试工具。 因为上一篇文章的所有<em>读写</em>操作都是在主线程中进行的,但是这样存在一个弊端,因为在 Windows 的桌面开发中,由于界面编程中的 “Windows 消息...
串口通信编程--多线程异步方式
转载请注明出自:blog.csdn.net/mingojiang   目录 一<em>串口</em>通信基础       1.1<em>串口</em>通信原理与特点      1.2<em>串口</em>通信的传输方式      1.3<em>串口</em>通信的同步技术      1.4串行接口标准      二 API函数实现<em>串口</em>通信    2.1打开<em>串口</em>  2.1.1<em>串口</em>是否有驱动     2.1.2连接<em>串口</em>     2.1.3<em>串口</em>逻辑
C#中SerialPort类接收数据多线程问题
学习<em>c#</em>进行<em>串口</em><em>读写</em>的时候我发现一个<em>问题</em>:期望发送一次接收一次,接着马上再发送一次接收一次(发送接收的<em>数据</em>输出到终端),会看到先发送两次再接收<em>数据</em>,而这时候只能接收到一次的<em>数据</em>。 sp.DataReceived += new SerialDataReceivedEventHandler(自定义方法); 原因在MSDN的文档中可以看到(https://docs.microsoft.com/zh...
c#串口通讯问题
一台pc需要程序控制多台仪器,这需要用到个多<em>串口</em>,一般情况下应该是一个<em>串口</em>对应一个<em>串口</em>的对象。 我的<em>问题</em>是: 1,在不知道具体有几台仪器的情况下,怎么创建出对应个数的<em>串口</em>对象? Comm c1 = n
用C#一步步写串口通信
用C#一步步写<em>串口</em>通信 标签: <em>c#</em>textboxbuttonobjectstring 2012-08-10 14:57 18916人阅读 评论(38) 收藏 举报  分类:   C#(2)  项目经验(1)  版权声明:本文为博主原创文章,未经博主允许不得转载。    附言: 1. 有网友反应我写的这篇文章还不错,索性就将它置顶
多线程实现串口读写数据以及文件的读写
适合的读者:初学用<em>多线程</em>实现对<em>串口</em>的异步操作,对线程的理解,以及对<em>串口</em>的<em>读写</em>。还有文件的<em>读写</em>都有最基本的使用方式。调试时,可以用<em>串口</em>调试助手一起结合的去学习~
Qt 多线程串口读写没有反应
    当我们利用Qt的<em>多线程</em>thread进行<em>多线程</em>编程操作的时候,对<em>串口</em>的打开关、闭可能一切正常,但会出现<em>串口</em><em>读写</em>不正常的现象。比如我们利用thread编写了一个步进电机驱动的程序,当我们的Qt程序与控制步进电机的单片机进行通讯的时候,会发现写入没有响应或只能对第一次写入响应,而完全没有读出等等。当我们检查程序的时候,没有发现任何有<em>问题</em>的地方,这时候<em>问题</em>可能出在对子线程的启动上面。    假设我...
Arduino 串口数据读写
源代码: char teststring; void setup() {  Serial.begin(9600);   //<em>串口</em>和Arduino之间的通信    }   void loop() {  while(Serial.available()&amp;gt;0){    teststring = Serial.read();     Serial.println(teststrin...
读写串口数据
我按照‘Delphi中<em>串口</em>通信的实现’(河南省计算中心 张海航)一文中所说的方法,来解决<em>串口</em>通信<em>问题</em>,但是在执行 rn move(buffer^,pchar(@rbuf^),bufferlength); rn时出现'pointer type required'的错误,我不知是怎么回事,请各位大师指教!rn我不胜感激!rnrnrn rnrn
串口读写数据
在给单片机写文本<em>数据</em>时,单片机不能开辟一个很大的<em>数据</em>将他们全部接收后在处理,这个程序在发送文本<em>数据</em>时,再发送完一个十六进制数后,等待1ms,让单片机有足够的时间处理这个<em>数据</em>,这样单片机只要开辟一个字节即可实现接收一个文本<em>数据</em>。比如有一串<em>数据</em>是23 45 65 78 A4,写在文本文档中,这个程序发送23后会隔一段时间再发45。注意发送为16进制<em>数据</em>,且要用空格隔开。
C#串口接收函数多线程问题
这个<em>问题</em>困扰了我两天,全程利用RS232短接引脚自发自收: CSDN提示没没有分来提这个<em>问题</em>,我都不知道能不能提出来这个<em>问题</em> 我做了2件事: 第一件:定义了一个<em>串口</em>接收函数: void comm_Da
c# 串口多线程数据接收
我用单独的一个线程接收<em>数据</em>,跟单片机通信, 比如我发送FF 05 05 05 01 五个字节,单片机返回一定的字节,字节的多少根据命令的不同而不同, 这时我定义了几个全局的标志位,通过标志位来用whi
c#串口多线程
<em>c#</em><em>串口</em><em>多线程</em>多<em>串口</em><em>多线程</em> 很不错地 哦
c#编写串口通讯代码 多线程实现
<em>c#</em>编写<em>串口</em>通讯代码 <em>多线程</em>实现 对<em>串口</em>通信测试具有极大的参考价值
C# SerialPort.DataReceived 是不是在后台线程里运行
SerialPort.DataReceived <em>串口</em>的<em>数据</em>接收事件,是不是没有在主线程里运行 Timer 是不是在窗口线程里运行? 我觉得是。 在主窗口有个 Graphics, 在Timer 里要用,
[C#]串口读写[源代码]
使用C#写的<em>串口</em><em>读写</em>代码,可以设置波特率,通讯端口,附带源代码.
MyComm,读写串口数据
MyComm使用delphi 4.0开发,可以在Delphi 3/4/5各版本中使用。
串口读写数据
我现在windows xp 系统上用VC++<em>读写</em><em>串口</em>,利用API函数,下位机是dsp,发送<em>数据</em>。现在有个<em>问题</em>是,当发送<em>数据</em>比如说‘A’后,上位机<em>串口</em>收到‘A’后,还继续接受大量的‘0’,感觉就是上位机把dsp<em>串口</em>端口处的低电平继续当做<em>数据</em>进行接受了,不能识别这种假<em>数据</em>。这如何处理呢?
C#中的串口读写
<em>问题</em>描述:做项目时用到了<em>串口</em><em>读写</em>,将扫码枪的<em>数据</em>显示到界面上。虽然很简单,但对于编程瓜皮的我,还是记录下来,方便以后学习。。。
C# 串口 读写 代码
C# <em>串口</em> <em>读写</em> 代码 CommPort.rar
C#基于事件驱动的多串口多线程串口通讯软件架构设计
最近写一个<em>串口</em>通讯程序,客户对界面,容量要求都比较高。要求支持多<em>串口</em>同时工作。于是自己提炼了一个架构,用于抛砖引玉。 本来想用VC,基于成本考虑,决定采用.Net,而且C#的事件比VC的消息容易控制些,只是跨线程触发的时候稍微注意下。 先上个图 上图是整个通讯控制架构,根据配置文件加载实例,每个<em>串口</em>打开一个线程用以处理命令队列。命令加以优先级来区分轻重缓急。
C# 串口多线程接收
private void ReadPort() { while (true) { if (sComm.IsOpen) { int count = sComm.BytesToRead; if
C#编写串口数据收发程序,收发很频繁,开了三个线程:接收、处理、发送,但界面切换很卡,求教线程处理机制,最好能提供参考或修改代码,谢谢大神啦~
C#编写<em>串口</em><em>数据</em>收发程序,点击界面按钮发送指令<em>数据</em>,等待接收返回的<em>数据</em>,此外还有周期性<em>数据</em>需要不断接收;接收到的<em>数据</em>要判断重复帧和是否是最后一帧,然后去掉帧头帧尾并显示在界面控件内;目前程序开了三个线
C#多线程操作WPF GUI控件,串口数据接收发送
运行环境为VS2015,如果直接在<em>多线程</em>中操作GUI会报错,在.net中,可以通过Dispatcher.Invoke来委托进行操作具体用法示例:节选自该程序中接收下位机发送<em>数据</em>并显示的代码1.先在其他函数中创建并启动线程ThreadStart threadStart = newThreadStart(ReceiveData);//ThreadStart是一个委托,创建一个线程来在后台接收<em>数据</em>   ...
csharp 多串口解决方案
现有一个程序通过socket接收<em>数据</em>,然后再通过多<em>串口</em>发送出去。我现在单个<em>串口</em>的已经实现, 对于多<em>串口</em>的实现,不知道哪位弟兄曾经做过?
C# 串口读写
需求描述:有15个信号箱,我需要不断读取这15信号箱的当前状态,通讯方式是<em>串口</em>通讯,我通过<em>串口</em>向一个信号箱发指令,然后该信号箱会回我一个指令。rn使用的是 serialPort控件rn<em>问题</em>描述:使用该控件的DataReceived方法有个<em>问题</em>,回的指令有7字节,但是第一个字节到了之后就触发该事件了,试过使用BytesToRead,但是想到万一没有收到估计的7个字节,会一直错下去。同时又要考虑到15箱子轮巡一遍时间不能太长,最好控制在1秒左右,不知道各位大神是否有好的建议!
串口数据读写.vi
在labview中编程,实现向<em>串口</em>写入<em>数据</em>并且从<em>串口</em>读出<em>数据</em>。
C# SerialPort 串口读写
实现<em>串口</em>事件DataReceived接收<em>数据</em> 后台开启一个监控线程来监控是否<em>数据</em>接收完成 定义3个事件,用来通知<em>数据</em>接收完成、<em>数据</em>发送完成、每次接收<em>数据</em>。
C#串口读写程序
visual C#2005下的<em>串口</em><em>读写</em>程序,非常好用的程序.
c#串口数据读写的使用
将字符串<em>数据</em>写入指定<em>串口</em>,并读取显示出来,介绍在<em>c#</em>环境下使用<em>串口</em>的方法。
c#串口收发工具,收到数据要开线程做数据处理吗?
我完全不懂<em>c#</em>,在网上找到一些关于<em>c#</em>的<em>串口</em>收发工具的代码,然后改了一下,自己也做了一个<em>c#</em>的<em>串口</em>收发工具,使用的代码大概是这样的: SerialPort sp = new SerialPort();
C#串口通讯(变参、委托、线程安全队列)
这两天由于项目需要,调试了一下C#的<em>串口</em>通讯,参考了以前做的Android项目所用的设计模式: 父类DataTransport设计成单例模式,程序始终保持只有一种通讯链路,DataTransport中的方法都由子类实现。 由于对C#不是很熟练,调试过程中遇到了较多<em>问题</em>,最终通过努力找到了解决方法,稍微总结一下。 变参函数 <em>串口</em>、蓝牙和Wifi的设置参数不同,它们各自的setConfig函数的形参也不
C#读写串口数据,读不到
如题,代码如下:rn[code=C#]using System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.IO.Ports;rnrnnamespace WindowsApplication1rnrn public partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rnrn rn SerialPort port1=new SerialPort();rnrn rn //接收<em>数据</em>rn private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rnrn // 读取缓冲区的<em>数据</em>rn string data = port1.ReadExisting();rn textBox1.Text = data;rn rnrnrn //初始化SerialPort对象方法.PortName为COM口名称,例如"COM1","COM2"等,注意是string类型rn public void InitCOM(string PortName)rn rn port1 = new SerialPort(PortName);rn port1.BaudRate = 9600;//波特率rn port1.Parity = Parity.None;//无奇偶校验位rn port1.StopBits = StopBits.One;//两个停止位rn port1.DataBits = 8;rn rn //DataReceived事件委托方法rn private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn // 读取缓冲区的<em>数据</em>rn string data = port1.ReadExisting();rn textBox1.Text = data;rn rnrn //打开<em>串口</em>的方法rn public void OpenPort()rn rn tryrn rn port1.Open();rn rn catchrn rnrn rn if (port1.IsOpen)rn rn Console.WriteLine("the port is opened");rn rn elsern rnrn Console.WriteLine("failure to open the port");rn rnrn rnrn //关闭<em>串口</em>rn public void ClosePort()rn rn port1.Close();rn if (!port1.IsOpen)rn rn Console.WriteLine("the port is already closed");rn rnrn rnrn //向<em>串口</em>发送<em>数据</em>rn public void SendCommand(string CommandString)rn rn port1.Write(CommandString);rn //Console.WriteLine(port1.ReadExisting());rn textBox1.Text = port1.ReadExisting();rn rnrnrn private void button1_Click(object sender, EventArgs e)rn rn if (!port1.IsOpen)rn rn InitCOM("COM1");rn OpenPort();rn rn SendCommand("abcdefg");rn rnrn private void button2_Click(object sender, EventArgs e)rn rn port1.Close();rn rnrn private void Form1_Load(object sender, EventArgs e)rn rn port1.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);// new SerialDataReceivedEventHandler(port_DataReceived);rnrn rn rn[/code]
C#读写串口数据实现代码
C#中SerialPort类中DataReceived事件GUI实时处理方法 MSDN:从 SerialPort 对象接收<em>数据</em>时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。如果有必要修改主 Form 或 Control 中的元素,必须使用 Invoke 回发更改请求,这将在正确的线程上执行.进而要想将辅助线程中所读到的<em>数据</em>显示到主线程的Form控件上时,只有通过Invoke方法来
delphi多线程 读写数据
用独立的 TThread 单元 在同一个进程中 将 一份<em>数据</em>很多的文件 分成 两块 同事来读取。 提快速度。
linux下多线程读写数据
LINUX下一个线程进行从文件读取<em>数据</em>放进循环队列,另一条线程从循环队列取走<em>数据</em>,进行写到另一个文件中。
C#多线程读写sqlite
<em>多线程</em><em>读写</em>sqlite<em>数据</em>库,同步锁,计时测试<em>读写</em>性能,
c#串口 多线程
<em>串口</em>,100毫秒发送一次<em>数据</em>,但是接收端打算开一个线程实时监控,有<em>数据</em>就接收下来,放到窗口控件textbox1中显示。再开一个线程保存接收下来的<em>数据</em>,以便于回访。再开第三个线程实现<em>数据</em>回访显示(这个可以任意时刻进行),回访的<em>数据</em>放到一个textbox2中显示。 还要添加<em>数据</em>处理的 。 这该咋弄啊,好像要用托管啥的,请高手详细指教呀!!!
C#实现串口操作(包括读写串口,显示数据
C#实现打开<em>串口</em>,关闭<em>串口</em>,利用<em>串口</em>接收和发送<em>数据</em>,并且能把<em>数据</em>实时显示在屏幕上,实现世博功能!
Linux_C_C++串口读写串口读写
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的<em>串口</em>是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"<em>数据</em>终端设备(DTE)和<em>数据</em>通讯设备(DCE)之间串行二进制<em>数据</em>交换接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4% 的情况下,传输电缆长度应为 50 英尺。 Linux 操作系统从一开始就对串行口提供了很好的支持
c#串口读写类,这对串口读写操作
<em>c#</em><em>串口</em><em>读写</em>类,这对<em>串口</em>的<em>读写</em>的操作的类
关于串口读写数据的文章
关于<em>串口</em><em>读写</em><em>数据</em>的文章 <em>串口</em><em>读写</em>程序!!!
串口读写数据发生畸变
我那块板卡是传送arinc429协议<em>数据</em>的接口卡,应该是属于isa <em>串口</em>通信的板卡吧,不是普通的com1、com2之类的!在设备管理器里面看不到该设备!rnrn 它是接受一个32位的<em>数据</em>,然后我发现输入FF(16进制)以下的<em>数据</em>都不会有什么<em>问题</em>,但输入fff,接收到的<em>数据</em>变成:eff,但输入eee,可以正常,输入ddd,又变成cdd,反正如此循环,都是最高位比实际的低一位!rnrn不知道是什么原因,大家<em>读写</em>别的板卡,有没有碰到过这种事???
串口读写数据样例 Android-SerialPort-API
<em>串口</em>模块<em>读写</em><em>数据</em>样例,原demo中读取<em>数据</em>转String时乱码,添加了ByteArrayToHexString显示账号
C# 学习笔记(四)----- 串口读写
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 实例:<em>串口</em>读...
C# API方式串口读写
在调试ICU通信设备的时候,由于<em>串口</em>通信老出现故障,所以就怀疑CF实现的SerialPort类是否有<em>问题</em>,所以最后决定用纯API函数实现<em>串口</em><em>读写</em>。 先从网上搜索相关代码(关键字:C# API <em>串口</em>),发现网上相关的资料大约来源于一个版本,那就是所谓的msdn提供的样例代码(msdn的具体出处,我没有考证),其它的代码大都是它的变种。 其实这个示例代码是有<em>问题</em>的,也就是说D...
基于C#串口读写程序
基于C#<em>串口</em><em>读写</em>程序 //程序开启,<em>串口</em>初始化 private void Form1_Load(object sender, System.EventArgs e) { mycom1.PortNum = iPort; mycom1.BaudRate = iRate; mycom1.ByteSize = bSize; mycom1.Parity = bParity; mycom1.StopBits = bStopBits; mycom1.ReadTimeout = iTimeout; if (this.OpenCom()) msg.AppendText("<em>串口</em>初始化成功……\r\n"); else msg.AppendText("<em>串口</em>初始化失败!\r\n"); } //显示包信息 public string dis_package(byte[] reb) { string temp = ""; foreach (byte b in reb) temp += b.ToString("X2") + " "; return temp; } //开<em>串口</em> public bool OpenCom() { try { if (mycom1.Opened) { mycom1.Close(); mycom1.Open(); //打开<em>串口</em>
Java实现串口数据读写
最近的一个项目中需要将扫码枪读取到的<em>数据</em>取出,但是因为扫码枪是用<em>串口</em>传输<em>数据</em>的,比较少见,所以记录一下,当给自己做一个小结,有需要的同学也能参考一下。public class receiveData implements SerialPortEventListener{ protected static CommPortIdentifier portid = null; //通讯端口标识符
请问C#读写串口的方法
有源码更好,谢谢大家
如何向串口读写数据
请问如何设置<em>串口</em>波特率,及向<em>串口</em><em>读写</em><em>数据</em>
c#串口读写RF卡
通过<em>串口</em><em>读写</em>RF卡,<em>c#</em>代码编写,<em>串口</em>设置功能: 验证<em>读写</em>器中的密码与需要访问的卡片的同一扇区(0~15)的密码是否一致。如果<em>读写</em>器中选择的密码(可用rf_load_key 函数修改)与卡片的相匹配,密码验证通过,传输的<em>数据</em>将用以下的命令加密。
请教串口读写丢失数据问题
使用一个定时器控制一个写线程不断发送字符,rn同时开了一个读线程。rn<em>问题</em>:rn当不段发送写字符<em>串口</em>1时rn再从另一端同时也通过<em>串口</em>1接受字符来读rn就会出现丢失<em>数据</em>情况rnrn请问是为什么?不是<em>串口</em>是全双工的么?各行其道?为何还会出现这样情况?rn以上都是异步rn
C# 服务 多线程 XMl读写
小小的服务, 涉及了蛮多的知识点 ,上传以供大家参考, 也当给自己保存一下
完成端口中多线程数据读写问题
线程情况:A、B是IO完成处理线程,C是连接检查线程;rn<em>数据</em>结构:一个客户连接socket对应一个socket_context,一次IO对应一个io_context;rn有以下情景:rn1、为了接收客户端的一个请求,必须发出2次WSARecv(),这两次IO请求完成后必须将收到的<em>数据</em>合并到一起保存到socket_context里;这2次的完成处理可能分别在A、B两个线程里执行,所以A、B线程在<em>读写</em>同一个socket_context时,必须处理好同步关系;这里我用InterlockedXXX()函数改变socket_context中的标记量实现。rn2、当某个连接很久不发送某一种特定的<em>数据</em>时,C线程就会将该连接关闭,关闭时当然最好马上把socket_context清理掉;但是,C线程在做这个操作时,如果A/B正在<em>读写</em>socket_context就麻烦了。<em>问题</em>就是这里该如何处理最恰当?
串口读写问题
设备A通过485接线连接两个子设备A1和A2rnA要接收A1和A2的<em>数据</em>,如果是不同时间内的<em>数据</em>接收,那处理没<em>问题</em>。rn开一个线程,收到什么就处理什么。rnrn但是 当A1和A2同时发送<em>数据</em>至A的时候rn我想通过<em>多线程</em>让A接收, 可是领导说485是<em>串口</em>通讯,<em>串口</em>是串行的,无法并发rn所以要么接收到A1的<em>数据</em>,要么接收到A2的<em>数据</em>rn同时单独处理A1和A2的<em>数据</em>是不可能的rnrn请问他这个说法对吗?我不能收到A1+A2的一串<em>数据</em>吗?然后把它分解成A1和A2,再单独处理rnrnrnrn
读写串口问题
我这里有一个顾客显示屏,是证通ZT312型汉字顾客显示屏rn操作显示屏的方式是通过向<em>串口</em>发命令,我使用Delphi7.0做了个程序,使用了SPComm控件向<em>串口</em>发命令rn现在有以下两个<em>问题</em>:rn1、当我要在显示屏上显示三行文字rn如果我连续发三个命令:rn命令1;//显示第一行rn命令2;//显示第二行rn命令3;//显示第三行rn这时第三行就显示不出来rnrn如果我这样发命令:rn命令1;//显示第一行rn命令2;//显示第二行rnsleep(1000);rn命令3;//显示第三行rn这时第三行就可以正确显示出来rnrn请问这是为什么?rn注:以上的命令1,2,3都是用SPComm控件向<em>串口</em>发命令rnrn2、当比较连续(时间间隔较短)的向<em>串口</em>发送了多条显示命令后,显示屏会死机,不再对命令有反应,只能重新给显示屏上电后才能恢复正常,请问是为什么?
linux下串口读写问题
各位大虾:rn 小弟现在做<em>串口</em>通讯<em>问题</em>,是在linux环境下。rn 写<em>串口</em><em>数据</em>没有<em>问题</em>,因为我调用我的写<em>串口</em>程序,写入<em>串口</em><em>数据</em>后,在电脑的<em>串口</em>调试工具中能够看到我写的内容。但是我在调用我的<em>串口</em><em>数据</em>时发生了错误.rn 错误如下:rn [color=#FF0000] 在使用<em>串口</em>调试工具想<em>串口</em>发送<em>数据</em>时,在需要发送的<em>数据</em>前面 如果不加回车的话 无法读取<em>串口</em><em>数据</em>。必须在发送<em>数据</em>的前面加一个回车键 才可以。 真不知道怎么回事,都好几天了。代码如下[/color]rn 如果不加回车键 只能在 ioctl(fd,FIONREAD,&nbytes);//查询输入缓冲区中的字节数 中 输出缓冲区写入的字节大小 而读<em>串口</em>返回值确实0!!!rn int serialopen(char *device)rnrn rn int fd;rn struct termios tios;rn speed_t speed = B115200;rn if ((fd = open(device, O_RDWR|O_NOCTTY)) < 0)rn rn CALOG(">>>>>open serial device erro<<<<<>>>>cfsetospeed setting seer<<<<<>>>>cfsetispeed setting seer<<<<<>>>>>>>>>>tcsetattr setting erro<<<<<<<<<<<>>>>>>>>>nbytes = %d<<<<<<>>>>>>>>>rtrtrtr<<<<<<>>>>>>>>>nbyte[%d] = %d<<<<<<>>>>>>>>>ptr[0] = %d<<<<<<>>>>>>>>>ptt[%d] = %d<<<<<<>>>>>>>>>read serial erro<<<<<<>>>>>>>>>the data is null<<<<<<<>>>>>>>>>ptt[%d] = %d<<<<<<<>>>>>>>>>ptt = %s<<<<<<<,ptt);rn return count-1;rn 分数不多 还请各位大神帮帮忙啊
C#API读写串口问题
rn由于我需要在wince下运行,不能使用重叠功能,现在出现读一直挂起(没有读到<em>数据</em>时)rn[code=C#] //打开<em>串口</em>rn public int Com_Open(string ComSet, int BaudRate)rn rnrn int hCommFile;rn DCB dcb = new DCB();rn COMMTIMEOUTS TimeOuts = new COMMTIMEOUTS();rnrnrn hCommFile = CreateFile( ComSet,rn GENERIC_READ | GENERIC_WRITE,rn 0, //not sharedrn 0, //no security ??rn OPEN_EXISTING,rn 0,rn 0 );rnrn if(hCommFile == INVALID_HANDLE_VALUE)rn rn throw(new ApplicationException("Comm Port Can Not Be Opened"));rn rnrn // Is this a valid comm handle?rn if(GetFileType( hCommFile ) != FILE_TYPE_CHAR)rn rn CloseHandle( hCommFile );rn //throw(new ApplicationException("File handle is not a comm handle "));rn return INVALID_HANDLE_VALUE;rnrn rnrn if(!SetupComm( hCommFile, 4096, 4096 ))rn rn CloseHandle( hCommFile );rn //throw(new ApplicationException("Cannot setup comm buffer"));rn return INVALID_HANDLE_VALUE;rn rnrn // purge any information in the bufferrnrn PurgeComm( hCommFile, PURGE_TXABORT | PURGE_RXABORT |rn PURGE_TXCLEAR | PURGE_RXCLEAR ) ;rnrn // Setting the time-out valuern GetCommTimeouts( hCommFile, ref TimeOuts );rnrn // The CommTimeout numbers will very likely change if you arern // coding to meet some kind of specification wherern // you need to reply within a certain amount of time afterrn // recieving the last byte. However, If 1/4th of a secondrn // goes by between recieving two characters, its a goodrn // indication that the transmitting end has finished, evenrn // assuming a 1200 baud modem.rnrn TimeOuts.ReadIntervalTimeout=500;rn TimeOuts.ReadTotalTimeoutMultiplier=500;rn TimeOuts.ReadTotalTimeoutConstant=5000;rn TimeOuts.WriteTotalTimeoutMultiplier=500;rn TimeOuts.WriteTotalTimeoutConstant=5000;rnrn SetCommTimeouts(hCommFile, ref TimeOuts); // 设置超时rnrn // Configure the comm settings.rn // NOTE: Most Comm settings can be set through TAPI, but this means thatrn // the CommFile will have to be passed to this component.rn GetCommState(hCommFile, ref dcb);rnrn dcb.BaudRate = 28800;//BaudRate; // 波特率为rn dcb.ByteSize=8; // 每个字符有8位rn dcb.Parity = PAIRTY_EVEN; //奇偶校验rn dcb.StopBits=ONESTOPBIT; //一个停止位rn rn SetCommState(hCommFile, ref dcb);rn Opened = true;rn return hCommFile;rnrn rnrn //写<em>串口</em>rn public int ComReadFile(int ihCommFile, byte[] Readbuff, int ReadLen)rn rn if (ihCommFile != INVALID_HANDLE_VALUE)rn rn int NumberOfBytesTransferred = 0;rn OVERLAPPED ovlCommPort = new OVERLAPPED();rn if (ReadFile(ihCommFile, Readbuff, ReadLen, ref NumberOfBytesTransferred, ref ovlCommPort))//rn rn if (ReadLen == NumberOfBytesTransferred)rn rn return NumberOfBytesTransferred;rn rn else return NumberOfBytesTransferred;rnrn rn else return 0;rn rn else return 0;rn rn[/code]rn请问读,为何会挂起,我设置了超时,为何超时后不返回。我想超时后返回,如何写代码,注意,这是wince下使用,不是xp平台。
Linux串口读写问题
大家帮忙看看以下<em>串口</em><em>读写</em>程序,我(pc机)给单片机发0x11单片机收到会发0x22过来,但是我有时候可以读到0x22有时读不到,那有<em>问题</em>?谢谢!rnrn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrnint fd;rnrnint init_port()rnrn printf("init function begin\n");rn rn /*------------open the port-----------*/rn fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);rnrn if (-1 == fd)rn perror("Can't open serial port ");rn elsern printf("Open ttyS0\n");rnrn if(fcntl(fd, F_SETFL, 0) >= 0)rn printf("fcntl success!\n");rn elsern perror("fcntl ");rnrn if(isatty(STDIN_FILENO) == 0)rn printf("Standard input is not a terminal device\n");rn elsern printf("Isatty success!\n");rnrn printf("fd-open = %d\n", fd);rnrn /* set baud rate */rn struct termios oldtio, newtio;rnrn bzero(&oldtio, sizeof(oldtio));rn bzero(&newtio, sizeof(newtio));rn cfmakeraw(&newtio);rn rn //tcflush(fd, TCIOFLUSH);rnrn tcgetattr(fd, &oldtio);rnrn cfsetispeed(&newtio, B19200);rn cfsetospeed(&newtio, B19200);rnrn newtio.c_cflag |= CLOCAL; //rn newtio.c_cflag |= CREAD; //rn newtio.c_cflag &= ~CRTSCTS; //hardware flow controlrn newtio.c_cflag &= ~CSIZE; //rn newtio.c_cflag &= ~CSTOPB; //1 stop bitrn newtio.c_cflag &= ~PARENB; //Clear parity enablern newtio.c_cflag |= CS8; //8 bits datarnrn newtio.c_oflag &= ~OPOST;rn newtio.c_cc[VMIN] = 1; //min wait charsrn newtio.c_cc[VTIME] = 1; //wait timern tcflush(fd, TCIOFLUSH);rnrn tcsetattr(fd, TCSANOW, &newtio); //new setuprn tcgetattr(fd, &oldtio);rnrn printf("init function end\n\n");rn return 0;rnrnrnvoid read_serial()rnrn printf("read function begin\n");rnrn int len = 0;rn int buff[10];rn memset(buff, 0, 10);rnrn printf("fd = %d\n",fd);rnrn fd_set fs_read;rn FD_ZERO( &fs_read );rn FD_SET(fd, &fs_read);rn int fs_sel;rn struct timeval timeout;rn timeout.tv_sec = 5;rn timeout.tv_usec = 0;rnrn fs_sel = select(fd+1, &fs_read, NULL, NULL, &timeout);rn if(fs_sel)rn rn len = read(fd, buff, 1);rn perror("select"); rn printf("read nread = %d, 0x%2x\n", len, buff[0]);rn rn else if(fs_sel < 0)rn perror("select error");rnrn printf("buff = %s\n", buff);rn printf("no read nread = %d\n", len);rnrn printf("read function end\n\n");rnrnrnint write_serial(int data)rnrn printf("write function begin\n");rnrn int fs_sel;rn int len = 0;rn fd_set fs_write;rnrn FD_ZERO( &fs_write );rn FD_SET(fd, &fs_write);rnrn fs_sel = select(fd+1, NULL,&fs_write, NULL, NULL);rn rn if(fs_sel)rn rn len = write(fd, &data, 1);rn if(len == 1)rn rn printf("Send char 0x%2x to Comm\n", data);rn return len;rn rn elsern rn perror("PortSend write error");rn tcflush(fd, TCOFLUSH);rn printf("send data is = %d\n", data);rn return -1;rn rn rn else if(fs_sel);rn return 0;rn
串口读写格式问题
在vc里面,我想往<em>串口</em>写入一个字节,比如0x14的话,是不是我定义一个BYTE类型的变量rn如BYTE buf=20;然后用writefile( ,buf,)这个函数写到<em>串口</em>上,<em>串口</em>就能读出来这个字节是0x14??rn还是我必须要在writefile之前就先把十进制的20转化为0x14,然后在writefile呢,这两种方法,效果一样么?<em>串口</em>都是读到的0x14么?
linux串口读写问题
#define RSDEV_NAME "/dev/tts/0"rnrn/*rn*brief 设置<em>串口</em>通信速率rn*param fd 类型 int 打开<em>串口</em>的文件句柄rn*param speed 类型 int <em>串口</em>速度rn*return voidrn*/rnint speed_arr[] = B38400, B19200, B9600, B4800, B2400, B1200, B300,rn B38400, B19200, B9600, B4800, B2400, B1200, B300, ;rnint name_arr[] = 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, rn 19200, 9600, 4800, 2400, 1200, 300, ;rnvoid set_speed(int fd, int speed)rn int i; rn int status; rn struct termios Opt;rn tcgetattr(fd, &Opt); rn for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++) rn if (speed == name_arr[i]) rn tcflush(fd, TCIOFLUSH); rn cfsetispeed(&Opt, speed_arr[i]); rn cfsetospeed(&Opt, speed_arr[i]); rn status = tcsetattr(fd, TCSANOW, &Opt); rn if (status != 0) rn perror("tcsetattr fd1"); rn return; rn rn tcflush(fd,TCIOFLUSH); rn rn rnrnrn/**rn*brief 设置<em>串口</em><em>数据</em>位,停止位和效验位rn*param fd 类型 int 打开的<em>串口</em>文件句柄rn*param databits 类型 int <em>数据</em>位 取值 为 7 或者8rn*param stopbits 类型 int 停止位 取值为 1 或者2rn*param parity 类型 int 效验类型 取值为N,E,O,,Srn*/rnint set_parity(int fd,int databits,int stopbits,int parity)rn rn struct termios options; rn if ( tcgetattr( fd,&options) != 0) rn perror("SetupSerial 1"); rn return(FALSE); rn rn options.c_cflag &= ~CSIZE; rn switch (databits) /*设置<em>数据</em>位数*/rn rn case 7: rn options.c_cflag |= CS7; rn break;rn case 8: rn options.c_cflag |= CS8;rn break; rn default: rn fprintf(stderr,"Unsupported data size\n"); rn return (FALSE); rn rn switch (parity) rn rn case 'n':rn case 'N': rn options.c_cflag &= ~PARENB; /* Clear parity enable */rn options.c_iflag &= ~INPCK; /* Enable parity checking */ rn break; rn case 'o': rn case 'O': rn options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/ rn options.c_iflag |= INPCK; /* Disnable parity checking */ rn break; rn case 'e': rn case 'E': rn options.c_cflag |= PARENB; /* Enable parity */ rn options.c_cflag &= ~PARODD; /* 转换为偶效验*/ rn options.c_iflag |= INPCK; /* Disnable parity checking */rn break;rn case 'S': rn case 's': /*as no parity*/ rn options.c_cflag &= ~PARENB;rn options.c_cflag &= ~CSTOPB;rn break; rn default: rn fprintf(stderr,"Unsupported parity\n"); rn return (FALSE); rn rn /* 设置停止位*/ rn switch (stopbits)rn rn case 1: rn options.c_cflag &= ~CSTOPB; rn break; rn case 2: rn options.c_cflag |= CSTOPB; rn break;rn default: rn fprintf(stderr,"Unsupported stop bits\n"); rn return (FALSE); rn rn /* Set input parity option */ rn if (parity != 'n' && parity != 'N') rn options.c_iflag |= INPCK; rn tcflush(fd,TCIFLUSH);rn options.c_cc[VTIME] = 30; /* 设置超时3 seconds*/ rn options.c_cc[VMIN] = 0; /* Update the options and do it NOW */rn /**rn *如果不是开发终端之类的,只是<em>串口</em>传输<em>数据</em>,rn *而不需要<em>串口</em>来处理,那么使用原始模式(Raw Mode)方式来通讯rn **/rn options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON | IXOFF | IXANY);rn options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG |IEXTEN);rn options.c_oflag &= ~OPOST;rn rn if (tcsetattr(fd,TCSANOW,&options) != 0) rn rn perror("SetupSerial 3"); rn return (FALSE); rn rn return (TRUE); rnrnrn/**打开<em>串口</em>rn * dev <em>串口</em>设备名rn * mode 打开方式rn**/rnrnint opendev(char *dev,mode_t mode)rnrn int fd;rn fd = open(dev, mode); rn if (-1 == fd) rn perror("Can't Open Serial Port");rn return -1; rn rn elsern fcntl(fd, F_SETFL, FNDELAY);rn return fd;rn rnrn/********************************** input232.c 写<em>串口</em>********************************/rnrnrnvoid rs232_write(void)rnrn rn int rsfd = 0;rn int nwrite;rn char input_buf[64];rn rsfd = opendev(RSDEV_NAME,O_RDWR | O_NOCTTY | O_NDELAY);rn if(rsfd < 0)rn printf("open error:\n");rn return;rn rn set_speed(rsfd,9600); /*设置速率B9600*/rn if (set_parity(rsfd,8,1,'N') == FALSE) /*8位<em>数据</em>位,一位停止位*/rn printf("Set Parity Error\n");rn return;rn rn while(1) rn fgets(input_buf,sizeof(input_buf),stdin);rn printf("input_buf = %s", input_buf);rn nwrite = write(rsfd, input_buf, strlen(input_buf));rn if ( nwrite == -1 ) rn perror("ERROR!");rn exit(1);rn else rn printf("ret=%d\n", nwrite);rn rn rnrn/********************************** read232.c 读<em>串口</em>********************************/rnrnrnint read_rs232(int rsfd);rnvoid rs232_read(void)rnrn rn int rsfd = 0;rn// int nwrite;rn fd_set fdR;rn struct timeval timev;rn int n = 0;rn// char input_buf[64];rn rsfd = opendev(RSDEV_NAME,O_RDWR | O_NOCTTY | O_NDELAY);rn if(rsfd < 0)rn printf("open error:\n");rn return;rn rn set_speed(rsfd,9600); /*设置速率B9600*/rn if (set_parity(rsfd,8,1,'N') == FALSE) /*8位<em>数据</em>位,一位停止位*/rn printf("Set Parity Error\n");rn return;rn rn while(1) rn FD_ZERO(&fdR);rn FD_SET(rsfd, &fdR);rn timev.tv_sec = 0;rn timev.tv_usec = 100000;rn n = select(rsfd+1, &fdR, NULL, NULL, &timev);rn LOGMSG2("select ret %d", n);rn if(n 0)rn rn printf("nread:%d\n",nread);rn retbytes += nread;rn all_bytes += nread;rn rn return all_bytes;rnrnrn为什么rs232_read函数总是读取不到<em>数据</em>,在LOGMSG2("select ret %d", n);rn这里总是返回0????rn
求救!串口读写问题
我写了一个<em>读写</em><em>串口</em>的程序,我往<em>串口</em>上写入一个命令,cts-2000就发送一批<em>数据</em>到<em>串口</em>,然后我的程序接收。<em>问题</em>是有的时候程序能正常运行,即发了命令就能接到<em>数据</em>,但有的时候却接不到<em>数据</em>。有时候把cts-2000重启就好了,有的时候重启多遍也没用。我想不明白这是为什么,难道是什么参数我没设????救命!!!!
急:读写串口问题
我是一个新手,想在vc或c中如何对<em>串口</em>操作?最好有源代码,如果觉得分数太少,可以在给!rn
串口读写超时问题
用SetCommTimeouts()设置完COMTIMEOUTS结构体,但是我如何能够得到<em>读写</em>超时的事件或回调函数呢?超时是怎么体现出来的呢?
关于串口读写问题
使用MSCOMM控件进行<em>读写</em>rn'发送控制命令rnPrivate Sub Command2_Click()rn With MSComm1rn .CommPort = 1rn .Settings = "9600,N,8,1"rn End Withrn If Not MSComm1.PortOpen Thenrn MSComm1.PortOpen = Truern Elsern MSComm1.PortOpen = Falsern MSComm1.PortOpen = Truern End Ifrn MSComm1.OutBufferCount = 0rn '要发送的命令串(16进制) AA050001000807D0FFFFrn Dim zl(19) As Bytern zl(0) = &HArn zl(1) = &HArn zl(2) = &H0rn zl(3) = &H5rn zl(4) = &H0rn zl(5) = &H0rn zl(6) = &H0rn zl(7) = &H1rn zl(8) = &H0rn zl(9) = &H0rn zl(10) = &H0rn zl(11) = &H8rn zl(12) = &H0rn zl(13) = &H7rn zl(14) = &HDrn zl(15) = &H0rn zl(16) = &HFrn zl(17) = &HFrn zl(18) = &HFrn zl(19) = &HFrn rnrn MSComm1.Output = zlrnrn MSComm1.InputLen = 0 '表示读出接受缓冲区中的所有<em>数据</em>rn MSComm1.RThreshold = 20 '20个字符产生一次接受事件rn MSComm1.Handshaking = comNone '<em>数据</em>流控制 没有rn 'MSComm1.InputMode = comInputModeText '表示读取文本内容rn MSComm1.InputMode = comInputModeBinary '表示二进制<em>数据</em>rn If MSComm1.InputMode = comInputModeText Thenrn readtype = 1rn Elsern readtype = 2rn End IfrnEnd Subrnrn'接受<em>数据</em>rnrnPrivate Sub MSComm1_OnComm()rn Dim buffer() As Bytern ReDim buffer(20)rn rn Text1 = ""rn Select Case MSComm1.CommEventrn Case comEvReceivern '字符读rn MSComm1.RThreshold = 0rn If readtype = 1 Thenrn MsgBox MSComm1.InBufferCountrn instring = MSComm1.Inputrn Text1 = instringrn Elsern '二进制读rn Do Until MSComm1.InBufferCount = 0rn buffer = MSComm1.Inputrn DoEventsrn Looprn rn For i = 0 To 19rn List1.AddItem (Hex(buffer(i)))rn Next irn End Ifrn MSComm1.InBufferCount = 0rn MSComm1.RThreshold = 24rn Beeprn End SelectrnEnd Subrnrn现在的<em>问题</em>是发送该控制指令后,读出的<em>数据</em>显示该控制指令错误,请高手指正rn
velocity语法下载
Velocity语法 1. 变量 (1) 变量的定义: #set($name = "hello") 说明:velocity中变量是弱类型的。 当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示: #set($directoryRoot = "www" ) #set($templateName = "index.vm" ) #set($template = "$directoryRoot/$templateName" ) $template 输出将会是:www/index.vm 注:在velocity中使用$2.5这样的货币标识是没有问题得的,因为velocit 相关下载链接:[url=//download.csdn.net/download/wang2034/2284999?utm_source=bbsseo]//download.csdn.net/download/wang2034/2284999?utm_source=bbsseo[/url]
购物网站,jsp+strus+hibernate下载
购物网站.r购物网站.rar购物网站.rar购物网站.rar购物网站.rar购物网站.rarar 相关下载链接:[url=//download.csdn.net/download/shanxidalixiaopeng/3175685?utm_source=bbsseo]//download.csdn.net/download/shanxidalixiaopeng/3175685?utm_source=bbsseo[/url]
仿淘宝购物车项目下载
仿淘宝购物车项目,只是中间数据显示那块的仿照 相关下载链接:[url=//download.csdn.net/download/qq_16654471/8812849?utm_source=bbsseo]//download.csdn.net/download/qq_16654471/8812849?utm_source=bbsseo[/url]
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表
我们是很有底线的