[求助]串口开发,读取数据错乱 [问题点数:40分]

Bbs1
本版专家分:0
结帖率 0%
Bbs6
本版专家分:9994
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs6
本版专家分:9994
Blank
红花 2015年8月 硬件/嵌入开发大版内专家分月排行榜第一
2015年7月 VC/MFC大版内专家分月排行榜第一
2015年5月 VC/MFC大版内专家分月排行榜第一
2015年4月 VC/MFC大版内专家分月排行榜第一
2015年3月 VC/MFC大版内专家分月排行榜第一
2015年1月 硬件/嵌入开发大版内专家分月排行榜第一
2013年12月 VC/MFC大版内专家分月排行榜第一
2013年11月 VC/MFC大版内专家分月排行榜第一
2013年6月 VB大版内专家分月排行榜第一
2013年5月 VB大版内专家分月排行榜第一
2013年1月 VB大版内专家分月排行榜第一
2012年12月 VB大版内专家分月排行榜第一
Blank
黄花 2015年9月 VC/MFC大版内专家分月排行榜第二
2015年7月 硬件/嵌入开发大版内专家分月排行榜第二
2014年5月 VC/MFC大版内专家分月排行榜第二
2014年3月 VC/MFC大版内专家分月排行榜第二
2013年10月 VB大版内专家分月排行榜第二
2013年7月 VB大版内专家分月排行榜第二
2012年5月 VB大版内专家分月排行榜第二
2012年4月 VB大版内专家分月排行榜第二
2012年2月 VB大版内专家分月排行榜第二
2011年11月 VB大版内专家分月排行榜第二
Blank
蓝花 2015年11月 VC/MFC大版内专家分月排行榜第三
2015年6月 VC/MFC大版内专家分月排行榜第三
2015年2月 VC/MFC大版内专家分月排行榜第三
2014年1月 VC/MFC大版内专家分月排行榜第三
2012年3月 VB大版内专家分月排行榜第三
2011年12月 VB大版内专家分月排行榜第三
2011年10月 VB大版内专家分月排行榜第三
Bbs5
本版专家分:4679
Bbs5
本版专家分:2740
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2019年7月 总版技术专家分月排行榜第二
2019年5月 总版技术专家分月排行榜第二
Blank
铜牌 2019年8月 总版技术专家分月排行榜第三
2019年4月 总版技术专家分月排行榜第三
2019年3月 总版技术专家分月排行榜第三
Blank
红花 2019年8月 VC/MFC大版内专家分月排行榜第一
2019年7月 VC/MFC大版内专家分月排行榜第一
2019年6月 VC/MFC大版内专家分月排行榜第一
2019年5月 VC/MFC大版内专家分月排行榜第一
2019年4月 VC/MFC大版内专家分月排行榜第一
2019年3月 VC/MFC大版内专家分月排行榜第一
2019年1月 VC/MFC大版内专家分月排行榜第一
2018年12月 VC/MFC大版内专家分月排行榜第一
2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
C#串口编程--用Timer连续向串口发送数据时,读时有问题
各位好,自己在做一个从<em>串口</em><em>读取数据</em>的项目(哈哈算是一个项目吧),估计也有不少人做过吧,基本上都实现了,如果不用Timer的Tick事件,应该很难实现(对于现在的我来说,对于大家估计都不是了吧),具体说
Android 串口开发(一) 串口读写操作
<em>开发</em><em>串口</em>程序首先要求你的设备需要支持<em>串口</em>通信,可以在设备上装一个App端的<em>串口</em>工具来检测一下 链接:https://pan.baidu.com/s/11L4aZI9orBhbnztka6H1Og 提取码:bvot 或者在电脑端下载一个友善<em>串口</em>助手检测一下,一般在Android工控主板上面都会带有<em>串口</em>。 首先我们是用到了谷歌开源的APIserialPort 先贴出来下载地址http...
串口读取工具下载地址.txt
链接永久有效啊 unity 5.6 以上可用 Unity<em>串口</em>读取工具,实现异步同步数据的同时回调方法
串口读写源代码
一个通用的<em>串口</em>类,长期使用,读写没有问题
读取串口数据,java写的
eclipse idea 导入可以直接使用,读取<em>串口</em>代码,已经封装好,亲测可用。
串口读取数据
//全局 SerialPort portSMQ = new SerialPort(); //扫描监听 (窗体load事件里面) portSMQ.DataReceived += new SerialDataReceivedEventHandler(portSMQ_DataReceived); #region [接收扫描数据]         void portSMQ_DataR
串口读出数据错乱问题
有130分在rnhttp://community.csdn.net/Expert/topic/4757/4757369.xml?temp=.3044702rn老问题rn读取<em>串口</em>数据问题rn设备是磅机232口发出数据,10位ASCII数据,1位起始,10位结束,中间8位数据rn现在的问题跟控件设置没问题rn是数据读出的问题,rn例如正确数据AABBCCDD,rn如果端口打开直接读取的时候,直接读的是AABBCCDD,那么就没问题rn现在是在端口打开的瞬间,读出的数据可能是BBCCDDAA,或者CCDDAABB,DDAABBCC,所以显示出来的数据全都乱了rn有什么办法能正确分析出标志位,然后开始<em>读取数据</em>那
mscomm串口读取数据出错???
在pb9.0下使用mscomm进行手机短信收发,发送正常,读取<em>串口</em>时报错。rn代码: ole_1.Object.Inputrn错误:Error accessing external object property input at line 9.....
atlas枪串口读取数据
labview做的<em>串口</em><em>读取数据</em>的示例。大家看看吧,不吃亏。
【求救】串口打开 IO Exception异常
最近搞一个win ce 手持机读取身份证的功能,main.cs页面启动程序能进行读取身份证功能,后来改了需求,需要注册才能进行读取身份证功能,当我完成注册功能从online.cs窗体跳转到打开main
串口通讯 接收数据错位!
comdcb.BaudRate:=57600; comdcb.StopBits :=ONESTOPBIT; comdcb.Parity :=NOPARITY; comdcb.ByteSize:=8;
串口下位机上传数据和上位机所接受的数据的顺序如果不同是怎么造成的?
-
UDP通信,数据接收顺序错乱
程序A发UDP三个包(发包间隔比较短) U01, U02, U03 程序B接收包竟然变成 U02 U03 U01 怎样解决顺序问题?
为什么我获取串口数据时有时会乱了呢?
代码如下。我用timer 每1秒分别向下位机获取X Y坐标,但有时数据会少一个位,有时X,Y值会掉转 另:为什么我不用事件触发呢?主要是除了这个命令 我对下位机还有其他命令,我想发一条命令就准确收到其
jav通过串口读取数据
1、要知道<em>串口</em>是多少,波特率是多少 <em>串口</em>是COM3;波特率115200; <em>串口</em>是可以通过以下方式查看的; 2、通过COMMIX助手先测试是否能接受得到数据 2.1、<em>串口</em>对应的是COM3 2.2、波特率是115200; 2.3、打开<em>串口</em>,如果可以接受数据,那么说明你的设备没有问题 下载包,并且配置 https://download.csdn.net/download/qq_3...
STM32开发 -- 串口详解
讲完GPIO,接下来看一下<em>串口</em>。 未完待续!!
QT串口读取数据
QT<em>串口</em><em>读取数据</em>
关于QT串口读取数据
我想实现,读取<em>串口</em>数据进行作图。我的环境是qtopia-2.1.1、qt-embedded-2.3.10、qt-x11-2.3.2。我把我的程序列出来,希望大家给找找错误。[code=C/C++][/code]rn/****************************************************************************rn** Form interface generated from reading ui file 'drawdemo.ui'rn**rn** Created: Wed Feb 20 13:05:54 2008rn** by: The User Interface Compiler (uic)rn**rn** WARNING! All changes made in this file will be lost!rn****************************************************************************/rn#ifndef MYPLOTTER_Hrn#define MYPLOTTER_Hrn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrn#include rn#include rn#include rnrnclass QVBoxLayout; rnclass QHBoxLayout; rnclass QGridLayout; rnrnclass MyPlotter : public QWidgetrn rn Q_OBJECTrnrnpublic:rn MyPlotter( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );rn ~MyPlotter();rnprotected:rn virtual void paintEvent(QPaintEvent *);rnprivate slots:rn void rad();rn void savefile();rn void dos();rn void sendFG();rn void flushBuff();rn rnprivate:rn char buffer1[500];rn char buffer2[500];rn int buffer[10];rn int shijz[250];rn int highb;rn int lowb;rn float x_data[250];rn QTimer *timer0;rn QFrame *frame;rnpublic:rn QLabel *x_label[10];rn QLabel *y_label[10];rn QPainter *painter;rn QMultiLineEdit *medit; rn QLabel *file_name;rn QString file_name_in;rn QLineEdit *file_name_edit;rn QPushButton *button0;rn QPushButton *button1;rn QPushButton *button2;rn QPushButton *button3;rn QString convert_data;rn int confirm_flag;rn char ReceiveData[20];rn int fd;rn int i;rn int j;rn int qianb;rn int baib;rn int shib;rn int geb;rn int otd;rn int m1;rn int m2;rn int ret;rn int k;rn int wtable;rn int rtable;rn char buff[10];rn int yCoor[10];rn int xCoor[10];rn int hui[10];rn void drawHui();rn;rnrn
串口读取数据的问题,很简单的。
比如说,数据头的格式为“7D 12 B5 D8”,然后是“组号,接台,发台”,然后rn是“1C”,然后是“正文”,最后是“1A”,“CRC校验”。rn如果正确,则在窗口显示正确的正文。如果不正确,则发送一组数据。rnrn<em>串口</em>接收数据的程序我是照着“<em>串口</em>调试助手”源程序抄的。用的是mscom控件。rnrn我刚接触C++,很多东西不懂,请赐教。rnrnrn
C# 串口读取数据不完整
int bytes = serialPort1.BytesToRead; rnrn我在后面定义一个数组:rnrn byte[] buffer = new byte[bytes];rnrn当<em>串口</em>缓存里有16个数据时,bytes却只有3,有时是13,有时8,反正经常只读了一部分数据,导致该数组里的数据总是一经判断就出错。为什么呀?为何bytes和serialPort1.BytesToRead不相等,怎么解决这个问题,希望大家帮帮我!
通过串口读取数据
帮我看看下面是什么原因。发送的命令是正确的,但是的得不到要的数据,显示的是乱码,帮忙看看是什么原因,怎么改?rn程序:rn DWORD wCount=100;//读取的字节数rn BOOL bReadStat;rn BYTE buf[] = "VAL1?\r\n";rn DWORD Operated=0;rn BOOL bWriteStat;rn wchar_t str[100]=0;rn rn bWriteStat=WriteFile(hCom, buf,8, &Operated, NULL);rn if(!bWriteStat)rn rn AfxMessageBox(L"写<em>串口</em>失败!");rn rn Sleep(5000);rn bReadStat=ReadFile(hCom,str,wCount,&wCount,NULL);rn if(!bReadStat)rn AfxMessageBox(L"读<em>串口</em>失败!");rn //PurgeComm(hCom, PURGE_TXABORT|rn //PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);rnrn size=atof((char*)(LPCTSTR)str);rn m_disp=(int)size ;rnrn调试的时候的到的如下:rn+ str 0x0012f410 "䅖ㅌിㄫ㜮㜸䔱㌫਍㸽਍" wchar_t [100]rn
TCP异步接收数据顺序错乱的问题
系统应用于工控领域,形式比较特别,属于单客户端(计算机)——多服务器(下位机采集板卡)结构,由于需要频繁收发多个采集节点(主要是收)的数据,采用TCP异步接收,是在网上摘的代码稍作修改。计算机-计算机
linux串口收发数据不对(由于流控等设置不对导致)
最近一个项目使用了嵌入式linxu<em>串口</em>通信,由于通信使用的是2进制数据,经常出现通信校验失败,数据帧大小没问题,就是校验出错 c_iflag参数表 键 值 说 明 IGNBRK 忽略BREAK键输入 BRKINT 如果设置了IGNBRK,BREAK键输入将被忽略 IGNPAR 忽略奇偶校验错误
串口读写数据错误
COMMTIMEOUTS详解  (2012-07-22 17:13:02) 转载▼ 标签:  commtimeouts   读写<em>串口</em>   <em>串口</em>超时   it       在用ReadFile和WriteFile读写串行口时,需要考虑超时问题。如果在指定的时间内没有读出或写入指定数量的字符,那
C/C++串口通信原理及读写与操作
http://wangbaiyuan.cn/c-serial-communication-write-reading.html [展开]文章目录 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过<em>串口</em>进行通信。<em>串口</em>通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主
如何读取串口设备返回的数据?
在做一个项目,需用通过嵌入式<em>开发</em>板控制卫星定位模块与通信模块,将接收到的定位数据传给服务端。 目前的思路雏形大概是,写一个控制软件,向卫星定位模块发送AT指令(我用的是北斗星通) 在这里还算顺利,打开
串口读取数据问题
现有一个<em>串口</em>类,<em>读取数据</em>使用事件触发模式。setcommmask(hComm,ev_rxchar|ev_rxflag),另一个程序每隔一定时间向<em>串口</em>发送数据,时间间隔大约为20ms,现用这个<em>串口</em>类<em>读取数据</em>,readfile一看,一次竟然读了好几条数据!!在读的线程中使用GetTickCount看,发现读及处理时间很短可忽略,读线程优先级设置到HIGHEST,这样竟然还是读了几条数据,说明系统在触发<em>串口</em>事件的时间上设置不对吧,,那么怎么修改系统触发事件的时间呢??不知分析对不对,请指教!(每条数据最后一个字符为特殊字符,设置为收到这个特殊字符触发事件,即ev_rxflag标志)
我问个串口读取数据
[code=C#]rn //不超过70个字rn private static string SendSMSNormal(SerialPort sp, string tel, string content)rn rnrn string strCmd = "AT+CMMS=3\r";rn sp.Write(strCmd);rn Thread.Sleep(100);rn strCmd = "AT+CMGF=1\r";rn sp.Write(strCmd);rn Thread.Sleep(100);rn strCmd = "AT+CMGS=" + tel + "\r";rn sp.Write(strCmd);rn Thread.Sleep(100);rn strCmd = EncodingUCS2(content) + "\x1A";rn sp.Write(strCmd);rn Thread.Sleep(10000);rnrn string result = String.Empty;rn byte[] buffer = new byte[128];rn int count = sp.Read(buffer, 0, buffer.Length);rn result = Encoding.UTF8.GetString(buffer, 0, count).Replace("\0", "");rn return result;rn rn[/code]rn我使用SerialPort执行了指令之后,想获取返回值,但是int count = sp.Read(这里一直阻塞,执行不下去了,这是为什么?刚开始是可以读取的,后来不知道怎么就不行了,好像偶尔又行。搞不清楚。
串口读取数据不成功
打开<em>串口</em>函数成功rnBOOL CSerial::OpenPort(LPTSTR lpszPortName)rnrnrn DWORD dwError,dwThreadID;rn if(hPort)rn rn return FALSE;rn rn //打开<em>串口</em>rn hPort = CreateFile (L"COM2", GENERIC_READ | GENERIC_WRITE,rn 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);rn //如果打开端口出错, 返回FALSErn rn if ( hPort == INVALID_HANDLE_VALUE )rn rn //不能打开端口rn CString strError;rn strError.Format(_T("Unable to open %s, Error No.=%d"),rn lpszPortName, GetLastError());rn MessageBox (NULL, strError, TEXT("Error"), MB_OK);rn return FALSE;rn rn //指定端口监测的事件集rn SetCommMask (hPort, EV_RXCHAR);rn //分配设备缓冲区rn SetupComm(hPort,1280,1280); rn //初始化缓冲区中的信息rn PurgeComm(hPort,PURGE_TXCLEAR|PURGE_RXCLEAR);rn //配置串行端口rn////////////////////////////////rn DCB myDCB;rn GetCommState(hPort,&myDCB);rn myDCB.BaudRate = CBR_9600;rn myDCB.fBinary = TRUE;rn myDCB.fParity = TRUE;rn myDCB.ByteSize = 8;rn myDCB.Parity = ODDPARITY;rn myDCB.StopBits = ONESTOPBIT;rn SetCommState(hPort,&myDCB);rn/////////////////////////////////rn if(!InitDCB())rn return FALSE;rn //设置端口超时值rn if(!InitCommTimeouts())rn return FALSE;rn //设置端口上指定信号的状态rn // SETDTR: 发送DTR (data-terminal-ready)信号rn // SETRTS: 发送RTS (request-to-send)信号rn EscapeCommFunction (hPort, SETDTR);rn EscapeCommFunction (hPort, SETRTS);rn rn //创建一个从<em>串口</em><em>读取数据</em>的线程rn rn if (hReadThread = CreateThread (NULL, 0, ReadPortThread, this, 0,&dwThreadID))rn rn rn elsern rn //不能创建线程rn MessageBox (NULL, TEXT("Unable to create the read thread"),rn TEXT("Error"), MB_OK);rn dwError = GetLastError ();rn return FALSE;rn rn m_bConnected=TRUE;rn return TRUE;rnrnrn读线程函数rnDWORD WINAPI ReadPortThread(LPVOID lpvoid)rnrn rn BOOL fReadState;rn DWORD dwCommModemStatus;rn DWORD dwLength;rn COMSTAT ComStat;rn DWORD dwErrorFlags;rn CSerial *pOwner = (CSerial*)lpvoid;rn char szBuf[1200];rn memset(szBuf,0,1200);rn OVERLAPPED Rol= 0;rn while (hPort != INVALID_HANDLE_VALUE)rn rn //等待<em>串口</em>的事件发生rn WaitCommEvent (hPort, &dwCommModemStatus, 0);rn if (dwCommModemStatus & EV_RXCHAR)rn rn ClearCommError(hPort,&dwErrorFlags,&ComStat);rn //cbInQue返回在串行驱动程序输入队列中的字符数rn dwLength=ComStat.cbInQue;rn n = dwLength;rn if(dwLength>0)rn rn //从<em>串口</em><em>读取数据</em>rn buf=szBuf;rn ZeroMemory(buf,1200);rn n = dwLength;rn Rol.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);rn if(Rol.hEvent == NULL)rn rn AfxMessageBox(L"hEvent空",0,0);rn return -1; rn rn fReadState = ReadFile(hPort,buf,1200,&dwLength,&Rol);rn n = fReadState;rn n = dwLength;rn if(!fReadState)rn rn //不能从<em>串口</em><em>读取数据</em>rn MessageBox(NULL,TEXT("Error in read from serial port"),TEXT("Read Error"),MB_OK);rn rn elsern rn pOwner->DealData(szBuf,(int)dwLength); rn rn rn rn GetCommModemStatus (hPort, &dwCommModemStatus);rn rnreturn 0;rnrnrn读线程函数在调用ReadFile返回值为0.rn不知道错误在哪rn查了很久了rn忘大家竭力相助
gps串口读取数据问题
我用C++写了个程序通过<em>串口</em>从gps中<em>读取数据</em>, 可是读取的数据每组都是相同的,我用<em>串口</em>助手试了下,数据也是相同的。我想是不是要给这个gps发送什么命令,它才会读取下组数据。。。。纠结,求解释。我该怎么做?
串口异步通信循环读取数据
[code=c]while(m_hComm)rn rn rn PurgeComm(m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);rn ClearCommError(m_hComm, &dwErrorFlags, &ComStat);rn WaitCommEvent( m_hComm, &dwEvtMask,&m_op );rn WaitForSingleObject(m_op.hEvent,INFINITE);rn dwError = ReadFile(m_hComm,m_rcvbuf,40,&dwRead,&m_op);rn rn [/code]rnrn第一次运行到WaitForSingleObject的时候程序阻塞等待<em>读取数据</em>,通过虚拟<em>串口</em>发送40个数据,然后ReadFile读取了40个字节,但是返回了重叠I/O操作在进行中(不知道这个属不属于程序的正常行为);进入下一次循环运行到WaitForSingleObjt程序不阻塞,返回重叠I/O操作在进行中,继续进入下次循环运行到WaitForSingleObject的才阻塞等待<em>读取数据</em>,<em>读取数据</em>之后进入下次循环WaitForSingleObject又不阻塞了,如此每次<em>读取数据</em>之后都要多循环一次WaitForSingleObject才阻塞,求解救
串口通信中读取COM3、4中的数据(急死!!!)
各位大侠好: 我遇到一个非常棘手的问题。我们的项目中有一部分要求用TC++3.0 编写<em>串口</em>通信,我借用了CSDN上的serial.zip这个例子。但是由于工控机 上有4个<em>串口</em>,我现在无法读取COM3、
CH340串口读取
最近在<em>开发</em>android工控机同硬件设备通信的时候,用到了ch340U转串,所以把关于这个<em>串口</em>的一些知识分享给大家。 简介: CH34x 系列芯片是 USB 总线的转接芯片,主要包含 CH340、CH341、CH345,通过 USB 总线提供异 步<em>串口</em>、打印口、并口、MIDI 以及常用的 2 线和 4 线等接口。 CH34x <em>串口</em>提供的 Android 接口需要基于 Android 3.1 ...
串口数据读取工具
windows<em>串口</em>数据读取所需工具; librxtxParallel.so、librxtxSerial.so、RXTXcomm.jar 具体博客参考:https://blog.csdn.net/lan
java监听、读取串口数据
一但说要监听一个<em>串口</em>的数据,我们一般都会是会想到C#,但是就是不想用C#来<em>开发</em>。其实java也是可以的。 第一:需要下载一个额外的支持Java<em>串口</em>通信操作的jar包,Rxtx这个jar包(32位/64位均支持)。下载地址(里面有windows(x64和x86)和linux(x64和x86)的驱动包):http://download.csdn.net/download/atgeretg/10122...
串口的读写,文件读写
<em>串口</em>操作(下) 以下是我写的一些程序,主要就是实现给<em>串口</em>发送命令,接收<em>串口</em>反馈给PC机的信息,并且把信息保存在文件中。
串口读取数据的问题
各位老大,小弟请教一个关于在<em>串口</em><em>读取数据</em>的问题rn我做了一个小程序,用于在<em>串口</em>读取上传的文件.基本就是打开/dev/ttyS0,然后设置通信属性,然后就和一般文件一样读取了。但是,运行的时候发现,read()每次只能读取32个字节,对于一个100k的文件,要分号多次得读取,虽然整个文件的内容不会缺少,但是如果文件很大,就会花很长的时间来读取。rn这是什么原因呢?rn有没有什么办法可每次读取多一些的字符呢?rn
VB2008 串口读取数据问题
Public Class form1rn Private Sub <em>串口</em>测试_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadrn SerialPort1.Open()rn End Subrnrn Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickrn SerialPort1.Write(TextBox1.Text)rn End Subrn Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceivedrn MsgBox(SerialPort1.ReadExisting())rnrnrn End SubrnEnd Classrnrnrn我用VS2008 写的一个简单的发送和接收的问题,发送现在是可以的,现在接收只能用msgbox消息来显示,我也知道要用委托,可是不会,我想接收的数据显示到textbox2上,请问大虾该如何写?
windows上,串口读取数据
代码如下rn[code=c]rnint CMsComm::ReadData(unsigned char *lpBuf, DWORD *dwToRec)rnrn int returnValue=0;//返回值rn rn DWORD dwRead;rn DWORD dwRes;rn //错误标志rn COMSTAT ComStat;rn //错误rn DWORD dwErrorFlags;rn BOOL fWaitingOnRead = FALSE;rn OVERLAPPED osReader = 0;rn //读之前清除缓冲区rn rn //清除错误rn ClearCommError(m_hComm,&dwErrorFlags,&ComStat);rn //if(ClearCommError(m_hComm,&dwErrorFlags,&ComStat) || dwErrorFlags !=0)rn //rn // //清空缓冲区rn // PurgeComm(m_hComm, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);rn // //return -1;rn //rn rn //创建一个事件rn osReader.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);rn if (osReader.hEvent == NULL)rn rn AfxMessageBox(_T("创建事件失败!!!"));rn rn //如果并没有阻塞在读上面,那么执行以下代码rn if (!fWaitingOnRead)rn rn //从<em>串口</em>中读入数据rn BOOL bk = ReadFile(m_hComm,lpBuf,*dwToRec,&dwRead,&osReader);rnrn //如果读取不成功rn if(!bk)rn rn //如果读入不成功是因为阻塞了rn if(GetLastError() == ERROR_IO_PENDING)rn rn //fWaitingOnRead = TRUE;rn dwRes = WaitForSingleObject(osReader.hEvent,INFINITE);rn switch (dwRes)rn rn case WAIT_OBJECT_0:rn rn if (!GetOverlappedResult(m_hComm, &osReader, &dwRead, TRUE))rn rn AfxMessageBox(_T("读数据产生错误!!!"));rn returnValue = 1;rn rn elsern rn // AfxMessageBox(_T("读数据成功!!!");rn returnValue = 0;rn *dwToRec = dwRead;rn rn break;rn rn rn //读写超时rn case WAIT_TIMEOUT:rn rn AfxMessageBox(_T("读超时!!"));rn returnValue = 2;rn rn rn break;rn default:rn rn AfxMessageBox(_T("出现不可预知错误!!!"));rn returnValue = 3;rn rn rn break;rn rn rn rn rn rn rn //返回读入的字节rn CloseHandle(osReader.hEvent);rn rn //清空缓冲区rn PurgeComm(m_hComm, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);rnrn *dwToRec = dwRead; rn return returnValue;rnrn[/code]rnrn上面是<em>读取数据</em>的函数内容,我现在遇到了一个问题。rn当我需要读取的数据在不大的时候,一切读取正常。rn如果<em>读取数据</em>很大,例如,我的实际情况,是读取300k的数据rn在调用ReadFile(......)的时候,我只能读取到16k,这是为什么?如何解决这个问题呢?rnrn我在CreateFile()函数的后面,有设置一个rn[code=c]rn//设置串行口的输入和输出缓冲区的大小rnSetupComm(m_hComm,1024,1024); rn[/code]rnrn似乎并没有什么作用
C++串口同步和异步的读取与串口设备编程
本文主要讲述如何对<em>串口</em>进行高效率的读写,当<em>串口</em>中数据到达时立即读取进行处理,以及如何将该方法运用到<em>串口</em>设备编程中。为了使得程序更加清晰文中的代码去除了异常处理的情况。文中加粗的文字相应的比较重要,需要多注意。当然文中会有错误,欢迎评论指正。文章中代码下载地址 http://pan.baidu.com/s/1pLsP9wB1、COM口WindowsAPI函数CreateFile(&quot;COM1&quot;, .....
串口通讯读取数据问题
小弟通过电脑的232<em>串口</em>读取外部激光测距传感器的测量值,程序是根据龚建伟老师的<em>串口</em>调试助手写的。激光发射的函数通过OnTimer函数触发,每5s发射一次。我想从激光返回的CString类型的字符串获取
串口数据读取问题
首先声明一下,我是初学者不是业余<em>开发</em>人员,在学校也没有学过,勿喷,谢谢! 自己为生产线编写了一个<em>串口</em>读码程序,如果按照图示代码的话没有问题,我想实现只显示最新数据,新数据来的时候把旧数据覆盖掉, 现在
LINUX串口一次不能全部读取串口内容
       菜鸟级别的问题,希望对像我一样的人有所帮助。        我在做一个<em>串口</em>通信,上位机通过<em>串口</em>向控制板发送信号,信号的长度为23个字节。我使用Linux编程,自带的read()函数,用一个50个自己的数组来读,但是读取的字节数为8,9,13等不确定长度。不知道怎么做,想起来以前有个师兄跟我提过,单片机读取<em>串口</em>时,是一个字节一个字节读的,然后把读到帧头的数据,然后按照一定顺序往后读取...
windows下C++读取串口数据
windows下C++读取<em>串口</em>数据 这里提供一个类: SerialPort.h #pragma once #ifndef SERIALPORT_H_ #define SERIALPORT_H_ #include &amp;lt;Windows.h&amp;gt; #include&quot;DataFrame.h&quot; /** <em>串口</em>通信类 * * 本类实现了对<em>串口</em>的基本操作 * 例如监听发到指...
Java+jSSC 串口读取数据
首先google搜索jSSC 并下载jssc包 然后把该包加入到Eclipse 项目中(通过file->build path->configure build path->java build path->Libraries->add external jars) 引用jssc.jar文件。 import jssc.SerialPort; import jssc.SerialPortExc
有关串口读取数据的问题。
我在运行 commBean1.Initialize();的时候会出现如下的异常:rnrnjavax.comm.NoSuchPortExceptionrnrn at javax.comm.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:105)rnrn at study.CommBean.Initialize(CommBean.java:32)rnrn at study.CommBean.main(CommBean.java:23)rnrn也就说CommPortIdentifier.getPortIdentifier(portName);返回的是null;rnrn我用的是IBM THINKPAD R31 ,这个机器本身是没有<em>串口</em>的,但我用USB转串的线。rn因为我用超级终端是可以打开COM3的,而且可以从COM3上面<em>读取数据</em>。rn谁能帮我解释,给分。rnrnimport javax.comm.*;rnimport java.io.*;rnimport java.util.*;rnrnpublic class CommBean rnrn protected SerialPort serialPort;rn private static String portName;rn private static OutputStream out;rn private static InputStream in;rn private CommPortIdentifier portId;rn private BufferedInputStream reader;rn private String readString;rn private int numBytes=0;rnrn public CommBean(int portID) rn portName="COM"+portID;rn rn public static void main(String[] args) rn CommBean commBean1 = new CommBean(3);rn commBean1.Initialize();rnrn rnrn public boolean Initialize()rn boolean InitSuccess=true;rn boolean InitFail=false;rn tryrn System.out.println(portName);rn portId=CommPortIdentifier.getPortIdentifier(portName);rn tryrn serialPort=(SerialPort)portId.open("Serial_Communication", 2000);rn catch(PortInUseException e)rn System.out.println("端口被占用");rn return InitFail;rn rn tryrn in=serialPort.getInputStream();rn reader=new BufferedInputStream(in);rn out=serialPort.getOutputStream();rn catch (IOException e)rn System.out.println("创建流失败");rn return InitFail;rn rn tryrn serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);rn catch(UnsupportedCommOperationException e)rn System.out.println("参数设置失败");rn return InitFail;rn rnrn catch (NoSuchPortException e)rn System.out.println("失败");rn System.out.println(e.getMessage());rn return InitFail;rn rn System.out.println("成功");rn return InitSuccess;rn rnrn public void ReadPort()rn tryrn serialPort.addEventListener(new commListener());rn catch(Exception e)rn serialPort.notifyOnDataAvailable(true);rn rnrn public void StopRead()rn tryrn serialPort.removeEventListener();rn catch(Exception e)rn serialPort.notifyOnDataAvailable(false);rn rnrn public void WritePort(String Msg)rn tryrn for(int i=0;i 0) rn numBytes = reader.read(readBuffer);rn rn readString+= new String(readBuffer,0,numBytes);rn //处理自己的字符串rn catch (IOException e) rn rn rn rnrnrn
串口读取数据的几个问题
使用重叠方式来读写<em>串口</em>数据。对方是个工控机,返回的数据的长度是不可知的,而且有可能超出设的缓存区的大小。rnrnReadFile读取<em>串口</em>的数据的时候,会要求设一个要读取的数据的数量,但在数据长度不可知,且可能超出预设缓存区的情况下,有什么办法可以在重叠的方式下,取到所有的数据吗?rnrn另外,<em>串口</em>读写缓存区的大小最大可以设到多大?rnrn之前,我是用阻塞方式来读写<em>串口</em>的,设了超时,以单字节的方式读取,这样能保证读到所有的数据。但这种方式有两个弊端,对于那些返回数据很少的命令,执行时间太长了;对于那些要等待较长的时间,才能收到第一个字符的命令,这种方式往往取不到返回值。rn
请教串口读取数据问题!!!
现在从<em>串口</em>读取的数据不完整,请高手赐教啊!rn我用的是vs2005的<em>串口</em>控件
串口实时读取数据
请问 <em>串口</em>如何非按时间 轮询<em>读取数据</em>读,而是 实时<em>读取数据</em>?rn就是说下面有消息上来了,不是我隔1秒轮询来接收,而是立刻就上来。rnrnPrivate Sub Timer1_Timer()rnrn Dim tmp_str As Stringrn tmp_str = MSComm1.Inputrn Sleep 1000rn Debug.Print tmp_strrnrnEnd Subrnrn这个是轮询程序,实时如何写呢?rn
C#串口介绍以及简单串口通信程序设计实现
C#<em>串口</em>介绍以及简单<em>串口</em>通信程序设计实现 周末,没事干,写个简单的<em>串口</em>通信工具,也算是本周末曾来过,废话不多,直接到主题 <em>串口</em>介绍   串行接口简称<em>串口</em>,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度) <em>串口</em>应用:   工业领域使用较多,比如:数据采集,设备控制等等,好多都是用<em>串口</em>通信来实现!你要是细心的话,你会发现,
串口的读写,将读取的内容写在文件里,以及一些文件的读写操作
隔了好多天,终于要来发布我的第二篇心得了。鉴于之前写过的一些关于文件读写的操作,这次我要写的是对<em>串口</em>的读写以及一些操作。 以下是关于<em>串口</em>定义的一些函数。
Matlab探寻(三):自动识别串口设备并获取其串口号(serial && friendly name)
Matlab编写的<em>串口</em>调试助手网上有很多,有些比较好用的可以从这里下载[Matlab<em>串口</em>助手]。但是这些<em>串口</em>调试助手每次都需要手动设置<em>串口</em>号,然后才能打开设备,调试可以用,但是交互体验不好。所以我最后实现的是让Matlab自动识别<em>串口</em>设备及其对应的<em>串口</em>号。常见识别设备<em>串口</em>号的方法   开始之前我们先来看看其他人主要是怎么识别<em>串口</em>设备的。  a.任务管理器   大家最常用的方法,每次都手动打开任务管理
C# SerialPort 串口读写
<em>串口</em>发送接收数据,支持大量数据交互
Android串口的读取
1.安装ndk Android studio中点击 并且需要配置环境变量 2.创建jni文件 将上面5个文件放到jni文件下。需要注意得是5个文件都有用。 3.再Java目录下创建android_serialport_api文件夹 将Java代码SerialPort和SerialPortFinder两个文件放到里面 4.添加编译 上面得操作即可完成<em>串口</em>得读取功能。 关...
matlab从串口读取数据
本资源实现在matlab中建立<em>串口</em>,并从该<em>串口</em>进行数据的读取
串口读取数据就死机
我的代码如下:rnOVERLAPPED os;rnDWORD dwMask=0,dwTransfer;rnrnif(!WaitCommEvent(hComm3,&dwMask,&os))rn rnif(GetLastError()==ERROR_IO_PENDING)rnrnrnGetOverlappedResult(hComm3, &os, &dwTransfer,TRUE);//在这里死掉的!rnrn rnrnif(dwMask&EV_RXCHAR==EV_RXCHAR)rn.....rnrn我是在一个读取线程使用上述代码的,在win2000下调试,就是程序死掉。请问如何解决啊?
关于串口读取数据的问题
现在项目要求从<em>串口</em>扫描枪<em>读取数据</em>,假如条码内容是“123456”,但是程序中读取来的却变成分开像“123”和“456”两串数据需要重新合并。而我使用一些第三方的<em>串口</em>调试工具来调试这根扫描枪,却没有发生这样的情况。请问我是在代码上面出现什么问题?rnrnserialPort = new SerialPort("COM7", 115200, System.IO.Ports.Parity.None,8, System.IO.Ports.StopBits.One); rnserialPort.Encoding = Encoding.GetEncoding("UTF-8");rnserialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);rnrnprivate void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)rnrn Console.WriteLine(serialPort.ReadExisting());rn
求助:键盘按键错乱
在记事本中输入法为英语的状态下,我的键盘按了'\'会出现'#','"'变成'@',这些符号很多都错了,rn我用超级兔子的键盘检测时显示的又是另一种情况:按了'\'键,亮的是'"'键,显示号码是222;按'"'亮的是'~',显示号码是192;按'~'没反应,显示号码是223,这是什么原因?
求助~!!!关于Android串口的U3D开发
小弟只是想读个安卓<em>串口</em>数据而已,可是一上安卓就一直报DLLNotFindExcetion:MonoPosixHelperrn怎么处理,只是想读个<em>串口</em>啊...rn硬件上肯定没问题,用谷歌的开源<em>串口</em>API试过了,网上查找了很久还是没有结果,只有来问问各位大哥了,帮帮忙嘛...rn下面是代码:rn[code=csharp]void SerialPortInit(string com)rn rn string portName;rn if (com == null)rn portName = "COM0";rn elsern portName = com;rn int baudRate = 115200;rn Parity parity = Parity.None;rn int dataBits = 8;rn StopBits stopBits = StopBits.One;rn int ReadTimeOut = 400;rn SerialPort sp = null;rn sp = new SerialPort(portName, baudRate, parity, dataBits, stopBits);rn sp.ReadTimeout = ReadTimeOut;rn tryrn rn if (sp.IsOpen)rn rn sp.Close();rn sp.Open();rn rn elsern rn sp.Open();rn rn rn catch (Exception ex)rn rn Debug.Log("错误:" + ex.Message);rn rn [/code]
关于串口的打开与数据读取
自己写的打开<em>串口</em><em>读取数据</em>,包含位数据的读取与写入
Android串口通信:串口读写实例
在Android<em>串口</em>通信:基本知识梳理(http://gqdy365.iteye.com/admin/blogs/2188846)的基础上,我结合我项目中使用<em>串口</em>的实例,进行总结;  Android使用jni直接进行<em>串口</em>设备的读写网上已经有开源项目了,本文是基于网上的开源项目在实际项目中的使用做的调整和优化;  Google<em>串口</em>开源项目见:https://code.google.com/p
java读取硬件串口——数据断行问题
如题,因为项目上的需要,让我使用Java读取硬件外设的<em>串口</em>数据并进行处理。之前也有C语言的基础,使用过<em>串口</em>读写程序,觉得挺简单的,,没放在心上。毕竟<em>串口</em>这也算是各种语言里面最基础的应用了吧,大的使用步骤都差不多。结果,出现的各种问题真是让我欲仙欲死啊。现在把问题的解决方法写一下。 先说一下项目上的要求吧。我们这个项目需要高精度的GPS(全球定位系统)的定位数据和时间,需要最...
windows串口通信操作和代码实现
本文在撰写时参考了zwhxz的博客,博主的思路很清晰,可惜没有具体实现代码,所以本文在该博客的基础上进行了扩充并提供了实现代码。zwhxz的博客网址:http://www.cnblogs.com/zahxz/archive/2012/12/24/2830535.html在windows系统,windows处理<em>串口</em>和其他通信设备都是作为文件来处理的。<em>串口</em>的处理包括四个阶段:打开阶段、<em>串口</em>的初始化、从...
最近总结了串口(COM)读写操作的三种方式
最近总结了<em>串口</em>(COM)读写操作的三种方式:第1种方式是采用微软在.NET2.0推出了一个<em>串口</em>控件,SerialPort类,但必须是.NET2.0才可以第2种方式是用API写<em>串口</em>通信,虽然难度高,但可以方便实现自己想要的各种功能第3种方式是通过采用Visual Studio 6.0中原来的MSComm控件这是最简单的,最方便的方法,但需要注册以下详细分析了每种方式的使用方式,并提供相应例题下载:A.第
串口读取数据为什么连读两次?
以下是代码rn[img=http://hi.csdn.net/attachment/201007/12/5595442_1278902501tIDV.jpg][/img]rn下图是用<em>串口</em>调试工具,通过虚拟<em>串口</em>发送的数据rn[img=http://hi.csdn.net/attachment/201007/12/5595442_1278902763rj18.jpg][/img]rn下面是debug显示的抓取的数据和缓冲区的剩余长度rn[img=http://hi.csdn.net/attachment/201007/12/5595442_1278902503Zhoi.jpg][/img]rnrn代码:rnPrivate Sub Form_Load()rn If MSComm1.PortOpen = True Thenrn MSComm1.PortOpen = Falsern End Ifrn MSComm1.PortOpen = Truern MSComm1.RThreshold = 3rn MSComm1.InputLen = 3rnEnd SubrnrnPrivate Sub Form_Unload(Cancel As Integer)rn If MSComm1.PortOpen = True Thenrn MSComm1.PortOpen = Falsern End IfrnEnd SubrnrnPrivate Sub MSComm1_OnComm()rn Select Case MSComm1.CommEventrnrn Case comEvReceivern rn rn MSComm1.InputMode = comInputModeBinaryrn Dim temp() As Bytern temp = MSComm1.Inputrn rn Debug.Print "第一个数据:"; temp(0), "第二个数据:"; temp(1), "第三个数据:"; temp(2), "缓冲区剩余字节数:"; MSComm1.InBufferCountrn rn rn End SelectrnEnd Subrnrnrnrn[color=#00FF00]我只想读取一次共三个字节的数据做判断,然后再决定接下来的数据怎么收。为什么连读了两次数据?rn还有怎样改代码可以实现只读一次,读三个[/color]
C++中,串口之间读取数据
你们好:rn 请教个问题,坐等,谢谢rn C++中,一个程序用COM4<em>串口</em>,我要在一个页面中,用一个按钮点下去打开另一个<em>串口</em>COM2,然后读取COM2rn 中的数据,并打印出来。rn 请给个解决方法。
安卓 串口读取数据遇到的问题
安卓<em>串口</em>操作,在网上一定会找到很多关于谷歌的开源项目,把它的源码拿过来之后,经过编译发现无法<em>读取数据</em>。 接下来就是寻找收发数据失败原因的过程。 1、在Application中出现InvalidParameterException的异常,判断条件是 if ( (path.length() == 0) || (baudrate == -1)) 果断将path和baudrate的值写死,我
api函数串口读取数据的问题
用bool bResult=ReadFile(hComm, //<em>串口</em>句柄rn ucRxBuff, //输入缓冲区地址rn ComStat.cbInQue, //想读入的字符数rn &BytesRead, //实际读出的字节数的变量指针rn &ov_Read); //重叠结构指针rn读取<em>串口</em>数据,发现大部分时候是八个字节一读,没有办法得到整帧的数据。请问这是为什么,要怎样处理才能得到整帧的数据?
超声波测距程序,利用串口读取数据
超声波测距程序,利用<em>串口</em><em>读取数据</em>,超声波使用的的是US-100模块
非常好用的串口读写工具
非常好用的<em>串口</em>工具。可以顺序循环发送若干条。
Win32串口编程
Win32<em>串口</em>编程作者:韩耀旭下载源代码  在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过<em>串口</em>进行通信。<em>串口</em>通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过<em>串口</em>向智能控制单元发布命令,智能控制单元在接收到正确
串口读写程序
参考TeraTerm写的VC6的<em>串口</em>通信程序,基于读线程或CWinApp中的OnIdle
关于arduino通过串口发送到processing的数据混乱(错误\显示不正确)的问题解答
最近的教学中,已经开始使用processing和arduino进行<em>串口</em>通讯的互动,使用中发现有的同学遇到了arduino发送给processing的数据存在显示不正确,甚至混乱的现象。这里给予统一解释。 arduino代码完成的工作是将模拟信号口读入模拟数据,然后经过map映射为0到254之间的数据,以便于后续进行颜色设置的数值来使用。大体代码如下: void loop() { int val; ...
Android—串口相关(2.串口调试时出现的乱序、乱码、缺数据问题)
自己在<em>开发</em>调试过程中走了很多的坑,找了很多的文章,总结起来希望以后再碰到的时候能想起来,其中参考了大佬的相关回答:大佬的链接使用谷歌的<em>串口</em>调试工具有时会出现乱序和乱码以及缺数据的现象乱序问题有以下几种出现的可能:1.在配置相关<em>串口</em>时配置了多个<em>串口</em>原因:导致多个<em>串口</em>同时开启,<em>串口</em>之间抢占资源无法及时接收到信息。解决办法:确认配置了几个<em>串口</em>,并且不能循环开启<em>串口</em>。2.在配置相关波特率时没有统一波特率原...
串口读取数据 使用的MSCOMM控件
可以用于读取<em>串口</em>端数据,VC6.0下编译通过,不需硬件支持,挺有用的小程序
C++ 串口读取数据并且显示
在网上整合的一个程序,读取<em>串口</em>数据时,只能读取到一个数,然后显示出来时也乱码了,求教。rn有谁能给一段修改后的或者给点意见吗 谢谢rnrn#include rn#include rn#includernusing namespace std;rnHANDLE hMutex;rnrnDWORD WINAPI Read(LPVOID lpParamter)rnrn //打开端口rn HANDLE hCom = CreateFileA("com5", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);rn //设置超时rn SetupComm(hCom, 100, 100);//输入缓冲区和输出缓冲区的大小都是1024rn COMMTIMEOUTS timeouts;rn GetCommTimeouts(hCom, &timeouts);rn timeouts.ReadIntervalTimeout = 1000;rn timeouts.ReadTotalTimeoutMultiplier =500;rn timeouts.ReadTotalTimeoutConstant = 5000;rn timeouts.WriteTotalTimeoutMultiplier = 500;rn timeouts.WriteTotalTimeoutConstant = 2000;rn SetCommTimeouts(hCom, &timeouts);rn if (!SetCommTimeouts(hCom, &timeouts))rn rn cout << "超时设置失败!重新";rn CloseHandle(hCom);rn return 0;rn rnrn //取得并设置端口状态rn DCB dcb;rn GetCommState(hCom, &dcb);rn //dcb.DCBlength = sizeof(DCB);rn dcb.BaudRate =9600;rn dcb.Parity = 0;rn dcb.ByteSize = 8;rn dcb.fBinary = TRUE;rn dcb.Parity = NOPARITY;//无奇偶校验位rn dcb.StopBits = TWOSTOPBITS;rn if (!SetCommState(hCom, &dcb))rn rn cout << "端口状态设置失败!重新";rn CloseHandle(hCom);rn return 0;rn rnrnrn char buffer[100];rn DWORD readsize, dwError;rn BOOL bReadStatus;rn COMSTAT cs;rnrn WaitForSingleObject(hMutex, INFINITE);rn while (1)rn rn readsize=100 ;rn ClearCommError(hCom, &dwError, &cs);//取得状态rn //数据是否大于所准备缓冲区rn if (cs.cbInQue>sizeof(buffer))rn rn PurgeComm(hCom, PURGE_RXCLEAR);//清除通信端口数据rn return 0;rn rn memset(buffer,'\0', sizeof(buffer));rnrn bReadStatus = ReadFile(hCom, buffer, 100, &readsize, NULL);rn if (!bReadStatus)rn rn cout << "读<em>串口</em>失败!";rn return FALSE;rn rnrn else if (readsize>0)rn rn cout << readsize <
c# 判断串口读取数据完毕
[color=#0000FF]有什么好的办法来判断<em>串口</em>已经<em>读取数据</em>结束[/color],因为读取完了之后要继续向<em>串口</em>写下一条数据?
关于java串口读取数据的编码!
该如何去读取<em>串口</em>数据,最好能有编码和说明!菜鸟在做一个java<em>串口</em>调试小工具,希望能得到高手的指点。
如何从串口读取数据(vc6.0)
如何从<em>串口</em><em>读取数据</em>(vc6.0)
关于串口信息乱码的问题
我用一个网口接的<em>开发</em>板,window下开了一个<em>串口</em>调试助手。 通过板子写数据,<em>串口</em>能打印出来无乱码,,, 但是通过<em>串口</em>发送的信息,板子接收到打印出来有乱码。不知道怎么回事?求大神指教 我通过改<em>串口</em>的波
串口通信+多线程+数据错乱自动恢复+串口断开自动连接
Qt<em>串口</em>通信+多线程+数据<em>错乱</em>自动恢复+<em>串口</em>断开自动连接
C# serialport数据接收不全的问题?
C# serialport读取松下PLC的数据,用的是松下Mewtocol通讯协议,我在timer_tick事件中接收数据,因要实时<em>读取数据</em>,timer设置为1毫秒,数据接收时不全,代码如下: cls
C#中SerialPort类接收数据的多线程问题
学习c#进行<em>串口</em>读写的时候我发现一个问题:期望发送一次接收一次,接着马上再发送一次接收一次(发送接收的数据输出到终端),会看到先发送两次再接收数据,而这时候只能接收到一次的数据。 sp.DataReceived += new SerialDataReceivedEventHandler(自定义方法); 原因在MSDN的文档中可以看到(https://docs.microsoft.com/zh...
串口serialport.Read()接收一部分数据
string data="" int count=serialport.ByteToRead; byte byteBar=new byte; serialport.Read(byteBar,0,cou
usb转串口异步读取数据
该实验是通过usb转<em>串口</em>线连接了<em>开发</em>板的 uart3和pc。 在pc上编译下面代码并执行 #include #include #include #include #include #include #define MODEMDEVICE "/dev/ttyUSB0" #define FALSE 0 #define TRUE 1 int wait_flag=
C#串口读取数据效率的问题
对方指令以0x20结束rn如何读取效率比较高呢?rn目前采取的是ReadByte一个个字节读取rn这样会不会效率比较低???rn[code=csharp]rn byte[] bytArr = new byte[length];rn int ilength = 0;rn while (true)rn rn ilength++;rn byte byt = (byte)myPort.ReadByte();rn if (byt == (byte)0x20) //如果为结束帧rn rn break;rn rn else if(ilength > length) //如果超过数组下限rn rn break;rn rn bytArr[ilength-1] = byt; rn rn byte[] bytDest = new byte[ilength-1];rn Buffer.BlockCopy(bytArr, 0, bytDest, 0, ilength-1);rn[/code]rn当然我知道可以通过myPort.ReadExisting();这种方法一次读取缓冲区所有数据rn但这样返回的是string,对我了来说操作并不直观.rnrn跟myPort.Read(byt,0,length)这种方式可靠么?rn这种方式如何获取当前缓冲区的字节长度呢?根据 myPort.BytesToRead么?
LabVIEW,串口读取数据,简单实用
资源一分,LabVIEW的程序,尽量选用版本较高的,可以确信的是LabVIEW 2015可以打开资源。大神绕道,仅仅给LabVIEW初学者提供一个<em>串口</em><em>读取数据</em>的范例
readfile对串口读取数据的问题
ReadFile MFC中rn我读取一定的数据后,假设成功读取,每次读取后,<em>串口</em>的缓冲区的数据是不是自动被读走呢? 只保留还没有被读取的数据
linux串口读取数据的问题,select
用select<em>读取数据</em>的话,rn每当<em>串口</em>中断发生时,能立即读出来一个字节的数据吗?rn还是等到<em>串口</em>缓冲区满了,select才会读出来?rnselect检测的可读性,有点不明白的是,只要一有数据就能检测出来,还是必须达到一定长度才能检测出来?rnselect一定要在while(1) ...select();...这样等待吗?岂不是很浪费CPU时间?
C#串口SerialPort使用线程接收数据不完整问题
最近在做一个<em>串口</em>SerialPort使用线程接收数据,但是总是出现接收数据不完整问题,一部分数据丢失。而使用<em>串口</em>事件接收数据是正常的,请问这是怎么回事?
c#用serialport进行的串口数据接收,遇到了问题,求大神指点
-
SerialPort中的DataReceived事件触发问题 高手请进
private delegate void GetStr1( string str); private void button1_Click(object sender, EventArgs e) {
黑客大曝光PDF下载
黑客大曝光》是全球销量第一的计算机信息安全图书,被信息安全界奉为圣经。作者独创“黑客大曝光方法学”,从攻防两方面系统阐述了最常见的黑客入侵手段及对应的防御策略。本书在前5版的基础上对内容进行全面扩充和更新。开篇仍以“踩点”→“扫描”→“查点”三部曲,拉开黑客入侵的序幕。之后从“系统”、 “基础设施”、“应用程序和数据”三个方面对黑客攻击惯用手段进行剖析:“系统攻击”篇针对Windows、UNIX系统攻击给出精辟分析;“基础设施攻击”篇展示4类基础设施的攻击手段和防范策略——远程连接和VoIP攻击、网络设备攻击、无线攻击和硬件攻击;“应用程序和数据攻击”篇则引入全新概念 ——应用程序代码攻击,详 相关下载链接:[url=//download.csdn.net/download/javaswinglearner/5015583?utm_source=bbsseo]//download.csdn.net/download/javaswinglearner/5015583?utm_source=bbsseo[/url]
php多文件上传下载
使用thinkphp框架应用swfupload插件进行多文件上传 相关下载链接:[url=//download.csdn.net/download/dreamshead/6633991?utm_source=bbsseo]//download.csdn.net/download/dreamshead/6633991?utm_source=bbsseo[/url]
红蜘蛛破解器下载
破解软件,教学应用,很好用的,很多人都用过呢。 相关下载链接:[url=//download.csdn.net/download/jrsxf820130/8156003?utm_source=bbsseo]//download.csdn.net/download/jrsxf820130/8156003?utm_source=bbsseo[/url]
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法
我们是很有底线的