关于C++中用ReadFile实现串口读取时,接收“0x00”的问题请教 [问题点数:50分]

Bbs1
本版专家分:0
结帖率 66.67%
Bbs3
本版专家分:707
Bbs3
本版专家分:919
Blank
黄花 2018年9月 扩充话题大版内专家分月排行榜第二
Bbs2
本版专家分:465
Bbs5
本版专家分:4405
Bbs12
本版专家分:376307
Blank
状元 2017年 总版技术专家分年内排行榜第一
Blank
榜眼 2014年 总版技术专家分年内排行榜第二
Blank
探花 2013年 总版技术专家分年内排行榜第三
Blank
进士 2018年总版新获得的技术专家分排名前十
2012年 总版技术专家分年内排行榜第七
Bbs1
本版专家分:0
read\write in C++ from file
C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组 fstream提供了三个类,用来<em>实现</em>c++对文件的操作。(文件的创建、读、写)。 ifstream -- 从已有的文件读 ofstream -- 向文件写内容 fstream - 打开文件供读写 文件打开模式: ios::in             读 ios::out            写 ios::app   
C++文件读取readFile读取不完整
<em>问题</em>描述: 使用CreateFile创建的文件,writeFile写文件没什么<em>问题</em>,读的时候只能读到一部分,非得手动打开创建的txt文件,点一下保存,再读就能全部读到,不知道怎么整 关键代码: HAN
C/C++ Windows API——文件读写
// FileReadWriteDemo.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include #include int main() { //没有设置这句的话,printf中出现汉字包含后面的非汉字全部都打不出来 setlocale(LC_ALL, "chs"); BOOL ret;
串口通信中ReadFile和WriteFile的超时详解!
在用ReadFile和WriteFile读写串行口时,需要考虑超时<em>问题</em>。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。 有两种超时:间隔超时和
ReadFile返回的数据为乱码问题
WCHAR filePath[256]  = {0};WCHAR *path     = _T("//My Documents//11.txt");    hd = CreateFile(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL);    if
同步读串口,ReadFile 返回TRUE,读取的字节数却是0 ----- 解决办法是设置超时值
<em>串口</em> 超时 SetCommTimeouts
串口之ReadFile、WriteFile函数详解
BOOL ReadFile(   HANDLE hFile, //文件的句柄   LPVOID lpBuffer, //用于保存读入数据的一个缓冲区   DWORD nNumberOfBytesToRead, //要读入的字符数   LPDWORD lpNumberOfBytesRead, //指向实际读取字节数的指针   LPOVERLAPPED lpOverl
设置串口读写超时
  //注:读写方式为同步,另,此方法对虚拟<em>串口</em>无效。 HANDLE hCom1=CreateFile(_T("COM1"),GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_EXISTING, 0,NULL); if(hCom1==INVALID_HANDLE_VALUE) Messa
ReadFile
ReadFile函数从文件指针指定的位置读取数据。读操作完成后,文件指针将根据实际读出的数据自动进行调整,除非文件句柄是以OVERLAPPED属性值打开的。如果是以OVERLAPPED打开的I/O,应用程序就需要自己手动调整文件指针。     这个函数被设计成兼有同步和异步操作。ReadFileEx函数则设计成只支持异步操作,异步操作允许应用程序在读文件期间可以同时进行其他的操作。     函
C++ 读文件
c++ 代码中读文件 bool read_file(const char* path) { char line[MAX_FILE_LINE_LENGTH]; FILE *fp = NULL; fp = fopen(path, &quot;r&quot;); if (fp == NULL) { return false; } while (fgets...
c/c++ 学习-read 函数和 write 函数
read 函数和 write 函数 最近开始从事搜索引擎的工作,所以又重新开始了c/c++的旅程,时隔4年 不得不复习一下c/c++其中的内容,以下内容有网上别的朋友发表的,也有我自己总结的. 1. read         #include          ssize_t read(int filedes, void *buf, size_t nbytes);        
CreateFile, ReadFile详解
一、*****CreateFile*****     这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象: 控制台对象、通信资源对象、目录对象(只能打开)、磁盘设备对象、文件对象、邮槽对象、管道对象。     函数原型: HANDLE CreateFile( LPCTSTRlpFileName,                        // file name对象路
C/C++串口通信原理及读写与操作
转自王柏元的博客:C/C++<em>串口</em>通信原理及读写与操作,评论请前往原网站   在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过<em>串口</em>进行通信。<em>串口</em>通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过<em>串口</em>向智能控制单元发...
read函数读串口数据“分包”问题及解决方案
最近在做一个项目,其中要<em>实现</em>一个简单的数据透传功能。 功能简介: <em>实现</em>通过网络向485<em>串口</em>(温湿度传感器)发送指令,然后把<em>串口</em>返回的数据发送到网络端。 <em>实现</em>方法: 采用多线程技术,函数执行时创建两个线程, 一个线程负责<em>接收</em>(recv)网络端的数据指令,并把收到的指令写到(write)<em>串口</em>。 另一个线程负责读取(read)<em>串口</em>的数据,并且把读到的数据发送(send)到网络端。 遇到的问
USART串口发送0X00问题解决
今天在用USART发送数据时,我要发的数据如下,是一个数组      相应的发送程序如下 这个时候发现一个<em>问题</em> <em>0x00</em>之后的数据都无法发送出去 这是因为程序里面while检测到0X00时候就结束了, 就是这一行 while(*s) 后改写如下 void UART2_SendString(uint8_t* s,unsigned char le
串口读16进制,读的时候没数据等
读十六进制直接声明int数组<em>接收</em>就可以了。 0x89与0x98,忽略进位的校验和是0x11,计算方法是:((0x89>>4+0x98>>4)&0xf) 读<em>串口</em>,特别是模块的传输速率比较慢是,注意要加一个等待的动作,可以用printf()函数来消耗下时间,这样保证在程序结束前能读到数据。pc一个<em>串口</em>数据解码的函数大约用时30微秒,模块的速度有就差远了,读一帧可能要几万微秒,不等的话可能读不到数据
MFC串口通信的两种方法及注意事项
1.基于Active控件的方式(MSComm)         优点是:直接利用控件,在<em>串口</em>有数据到达时,会促发相应的事件响应函数,然后你可以在实践响应函数里,进行数据的读取。         缺点是:数据在发送和接受的过程中VARIANT、   COleSafeArray 类型的转换,显得繁琐。         步骤:        ①插入控件         选择Project菜单下
Windows API一日一练(54)WriteFile和ReadFile函数
读写文件是每个Windows软件开发人员都需要做的工作。可见这项工作是非常重要的,毕竟各种各样的数据都需要保存起来,以便作各种各样的分析,或者通过网络传送给别人。像大家用BT下载的电影,在那个BT软件里,就需要不断从网络里<em>接收</em>到数据,然后再把这些数据保存到文件里合适的位置,就可以生成跟发行者那里一样的文件,这样才可以播放出来。又比如我在玩《征途》的游戏里,刚刚打开游戏时,它就不断从服务器上下载更新
C++文件读写
C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组 fstream提供了三个类,用来<em>实现</em>c++对文件的操作。(文件的创建、读、写)。ifstream -- 从已有的文件读 ofstream -- 向文件写内容fstream - 打开文件供读写文件打开模式:ios::in
读写文件时遇到0D、0A、00问题
是写入\n则在\n前边自动添加\r。若是以字符串的形式写入数据(如puts函数)则在字符串中不能有\0不然\0之后的内容将无法写入。<em>问题</em>:1、如何让系统不自动添加\r\n?在打开文件时打开方式中添加‘b’这样系统就会以二进制的形式打开文件之后再读写时,系统将不会自动补\r\n。2、如何向文件中写入\0? 使用单个字符写入的形式可以将\0写入文件(fputc使用过可行)...
大家帮帮忙,用二进制打开文件,用BYTE数组读取数据是为了防止出现0x00吗,用char数组碰到文件里面的0x00会把他当成结束符吗?
用二进制打开文件,用BYTE数组读取数据是为了防止出现<em>0x00</em>吗,用char数组碰到文件里面的<em>0x00</em>会把他当成结束符吗? 部分代码如下: CFile file; struct FILE_MSG fi
读写串口实现(一)
* Windows自动识别<em>串口</em>的<em>实现</em>,以下是基于MFC开发的,以下所说都是建立在<em>串口</em>注册表上说的 *<em>实现</em>Windows系统下自动识别<em>串口</em>需要调用三个Windows API函数,它们是: //主要用于打开<em>串口</em>1. LONG RegOpenKeyEx( HKEY hKey, //主键,即<em>串口</em>信息存放的文件夹 LPCTSTR lpSubKey, //子键
C语言读取串口数据并16进制打印
区域控制器<em>串口</em>协议 1、通信格式=[帧头]+ [数据长度]+ [指令代码]+ [通信内容]+ [校验和]+ [帧尾]。 2、数据长度为从帧头至帧尾的所有字节(包含帧头、帧尾)总数; 3、校验和为校验位前面所有字节的异或; 4、RS232 <em>串口</em>通信,波特率 9600,无奇偶校验,8 位数据位,1 位停止位。 5、多字节传送数据时,高位在前,低位在后 关键代码Port.Cpp     ...
异步串口通讯第一次接收数据错误
异步<em>串口</em>通讯, 当第一次打开<em>串口</em>, 即<em>串口</em>上电, 其
C++串口同步和异步的读取与串口设备编程
本文主要讲述如何对<em>串口</em>进行高效率的读写,当<em>串口</em>中数据到达时立即读取进行处理,以及如何将该方法运用到<em>串口</em>设备编程中。为了使得程序更加清晰文中的代码去除了异常处理的情况。文中加粗的文字相应的比较重要,需要多注意。当然文中会有错误,欢迎评论指正。文章中代码下载地址 http://pan.baidu.com/s/1pLsP9wB1、COM口WindowsAPI函数CreateFile(&quot;COM1&quot;, .....
Linux下QT串口通过无线模块收发十六进制数据
前段时间写了一个<em>关于</em>Vimi-Net简要的收发码以及CRC校验的博客(http://blog.csdn.net/u011348999/article/details/16803829) 然后一直说把QT<em>串口</em>与Vimi-net的联机调试做一个总结。。结果一直拖到现在,人太懒了真不是件好事。。好了废话少说,我们进入正题。   我用的是广泛通用的yafeilinux所做的QT<em>串口</em>第三方类。没有看过
vc++ ReadFile 读取数据问题????
_int16 USB_ReceiveData64Byte(unsigned char *data) { DWORD Result = 0; int timeOut = 0; DWORD resLen
急求!c++关于16进制的串口发送问题
小弟在某宝买了数字舵机及其控制板,利用usb转ttl<em>串口</em>控制,根据卖家提供的协议小弟在vs2010编写了一个简单的c++的16进制<em>串口</em>发送程序如下。 #include #incl
C++ 串口通讯,为何我数据老是发送错误
-
C++ 十六进制发送数据的串口通讯问题
现有字符串 str1 = "07 0A 02 10 03 00 00 00 00 00" 我如何才可以以十六进制的方式发送给<em>串口</em>,初学者求教!谢谢指点!
串口通信程序中十六进制格式发送和接收实现
刚刚用MFC编写了一个采集和设定中央空调控制板上参数的应用程序,控制板和PC机之间通过485转<em>串口</em>和<em>串口</em>转USB电路<em>实现</em>通信。程序设计中碰到一个<em>问题</em>是PC端对发送和<em>接收</em>数据格式的处理,控制板可以读懂的协议是一组16进制数,如“66 03 0C 00 01 00 01 00 00 00 00 00 3C 00 3E F5 94”,PC端应用程序可以解析的也是由控制板发送的一组16进制数,而<em>串口</em>通信是
管道piep使用ReadFile读取阻塞问题解决
0x01.CreatePipe管 道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另 一进程就可以从管道的另一端将其读取出来。匿名管道(Anonymous Pipes)是在父进程和子进程间单向传输数据的一种未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。BOOL WINAPI CreatePi
清空串口的缓存及应用
PurgeComm(hCom, PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
C#和C++的不兼容;ReadFile卡死;C#资源如何立刻释放资源
<em>问题</em>陈述: 背景:整个程序是C#写的,其中调用了C++写的dll。 我这里是在mobile系统下碰见的一个<em>问题</em>,就是我在C#中调用了一下C#的<em>串口</em>操作,也就是说new一个serialPort对象,然后对<em>串口</em>读写,最后Close掉。此时我去调用windowsApi,但不是直接调用,而是通过DllImport一个dll,这个dll是用C++写的,而dll中有打开相同<em>串口</em>和读写的函数,结果会卡在Re
关于ReadFile函数错误:代码6,ERROR_INVALID_HANDLE
最近想用API函数写一个<em>串口</em>异步读写的测试代码,翻了很多资料,把别人的代码简单加工一下。结果明明是跟别人代码一致,执行后却啥也收不到,开始查找<em>问题</em>,从初始化,设置,<em>串口</em>连接……全都改成和别人代码一致,还是不行!一步步看,明明使用ClearCommError捕捉到缓冲区有数了,ReadFile函数却一直不能正常执行,GetLastError后代码为6,查MSDN,ERROR_INVALID_HAND
ReadFile异步读设备
#include #include int main (void) { HANDLE hDevice=CreateFile(TEXT("C:\\1.txt"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, ///此处设置F
C++实现串口的自动识别
1.首先需要遍历注册表得到所有可用的<em>串口</em> 详细的代码如下所示,将得到的每一个<em>串口</em>保存到向量vector中 //得到所有的<em>串口</em>号 vector&amp;lt;string&amp;gt; cnComm::getComPort() { HKEY hKey; char portName[256], commName[256]; //打开<em>串口</em>注册表对应的键值 if (ERROR_SUCCESS == ...
ReadFile函数卡住
你在打开文件时用了FILE_FLAG_OVERLAPPED,但是ReadFile中 lpOverlapped传的是NULL。把FILE_FLAG_OVERLAPPED改成FILE_ATTRIBUTE_NORMAL试试。 ================================ 打开文件时不用FILE_FLAG_OVERLAPPED,ReadFile的最后一个参数就是NULL。如果用了FIL...
【高分求助】C++求助。这么多年还没遇到过!关于readfile
如题,从<em>串口</em>读取数据。 使用 ReadFile(commnum,readbuff,size,&readnum,NULL); ReadFile 介绍 http://baike.baidu.com/vie
linux串口接收不到0x0d|0x11|0x13解决
linux<em>串口</em><em>接收</em>不到0x11解决网上许多流行的linux<em>串口</em>编程的版本中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没什么<em>问题</em>,但传送二进制数据时遇到0x0d,0x11和0x13却会被丢掉。不用说也知道,这几个肯定是特殊字符,被用作特殊控制了。关掉ICRNL和IXON选项即可解决。 www.2cto.com c_iflag &=
串口通信数据丢失的问题
担任去中兴软创合作的项目,并且担任了组长责任大了,独立完成C++的<em>串口</em>通信全部功能. 昨天调试我写的<em>串口</em>通信程序,发现<em>0x00</em>的数据无法<em>接收</em>。在网上找了一下,发现有不少人有遇到这个<em>问题</em>。 今天早上来,把程序改过了,现在可以很好地<em>接收</em>到<em>0x00</em>数据了。   参考了一些资料 http://topic.csdn.net/u/20090112/15/60e7cd07-7336-4a6c-9b24-245f6379cf70.html <em>0x00</em>对于char类型的数据来说可能会
WIN32API串口接收数据简单测试
进行简单的API中一部分<em>关于</em><em>串口</em>通信函数的测试,为以后的上位机编写做准备。 下面是一部分从网上和msdn整理的函数说明:   ReadFile: BOOL ReadFile (    HANDLE hFile, //用CreateFile获得的文件句柄    LPVOID lpBuffer, //输入缓冲区首址    DWORD nNumberOfBytesToRead,//设
windows C语言读串口数据
(1)这种方式真的很奇怪,乍一看咋都不像打开<em>串口</em>的,但是真的可以打开。不过在这段代码里并没有配置<em>串口</em>,所以必须借助<em>串口</em>助手才可以,就是先用<em>串口</em>助手打开<em>串口</em>,然后这段程序才可以正常运行。可能是因为在<em>串口</em>助手里已经配置好了<em>串口</em>。#include #include int main() { FILE *fp; if ((fp = fopen("com6", "r")) == NULL) {
Linux系统下串口接收数据,部分特殊字符丢失的解决方法 .
最近在linux系统中写了个<em>串口</em><em>接收</em>程序,发送端依次从<em>0x00</em>~0xFF发送字符,但<em>接收</em>端某些字符老<em>接收</em>不到,分析及其解决方法如下: 一、只<em>接收</em>到数据: 05 06 07 08 09 0a   解决此<em>问题</em>之前我们先看终端I/O的两种输入处理模式: (1) 规范方式输入处理。在这种方式中,终端输入以行为单位进行处理。对于每个读要求, 终端驱动程序最多返回一行。 (2
win32 ReadFile 读文件到最后 (异步方式)
参考网页 : https://msdn.microsoft.com/en-us/library/windows/desktop/aa365690(v=vs.85).aspx VS2010 建立一个console 工程,设置编码格式为: 代码如下: #include &quot;stdafx.h&quot; #include &amp;lt;windows.h&amp;gt; #include &amp;lt;tchar....
串口异步读写
<em>串口</em>异步读写 最近尝试写了一个<em>串口</em>读写的程序,学习并复习了一些知识点。本文首先讲异步读写注意点,然后讲<em>串口</em>的注意点。因为有些<em>问题</em>没有深入研究下去,所以本文也仅仅当做一个笔记。   1.      文件指针 我们使用ReadFile和WriteFile来进行读写,这两个API是用来读写文件的,在同步读写中,有一个文件指针的概念,但是在异步读写中,系统会忽略文件指针。 OVERLAP
vb API 串口通讯(串口配置、接收、发送数据)
Option Explicit 'Private Type COMSTAT '    fCtsHold As Long '    fDsrHold As Long '    fRlsdHold As Long '    fXoffHold As Long '    fXoffSent As Long '    fEof As Long '    fTxim As Long '
防止读匿名管道的无限阻塞问题的方法
假设程序维护一个匿名管道,fd[0]读端,fd[1]写端。父进程从管道中读数据,子进程循环读取一个文件并将读到得到内容写入管道。 这时如果不注意的话,很容易出现读管道的无限阻塞。 读管道如下 nread = read(fd[0],buffer,size); 当父进程 向管道中写入最后数据时,最后一次写入的数据可能比size小,也就是管道中的数据少于size。这时我的程序出现了read()一直
RS485通讯时,在结束到的数据中总是出现多余的一个字节0x00
最近一个项目<em>中用</em>到RS485通讯,三个从机都连接到STM32的同一个485主机,但调试发现在主机<em>接收</em>从机的数据时,总是在第一个字节前面多收到一个<em>0x00</em>,但程序找不到任何<em>问题</em>。上网查了下,发现很多人都遇到过这样的<em>问题</em>,解决方法大概有以下三种: (1)控制器连了J-Link,下载程序后把J-link拔掉就好了。 (2)导线<em>问题</em>,换一根485通讯的导线就行了。 (3)在485发送数据的时候,禁止
ReadFile函数 WIN7 返回错误
年轻的时候,在WIN XP下写了个<em>串口</em>通讯工具,一直流畅运行,表现良好。 后来把这套软件运行在win7下,ReadFile函数就出错了,getlasterror得到的错误码是 ERROR_IO_PENDING(997):重叠的IO操作。 我擦,这是什么事情,各种搞不懂,至今也搞不懂,只是加入了以下逻辑,就可以在WIN7下完美 运行了。 如果您看到这篇文章,也知道为什么XP下能正常运行
STM32初始化USART后发送了一个0x00?why???
初始化后,用了自创的printf,结果<em>串口</em>助手
串口调试助手,能打开COM1-16,解决十六进制00不能显示
使用MSComm控件完成的<em>串口</em>调试助手, 可打开1到16的<em>串口</em>,经测试性能很好 定时发送 16进制发送 发送文件 16进制显示 在长时间大数据量测试的情况下能正常工作 解决十六进制00不能显示的<em>问题</em>
COMMTIMEOUTS详解(读写串口超时)
COMMTIMEOUTS详解 (2012-07-22 17:13:02) 转载▼ 标签: commtimeouts读写<em>串口</em><em>串口</em>超时it       在用ReadFile和WriteFile读写串行口时,需要考虑超时<em>问题</em>。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查
Win API串口通信原理及读写与操作
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过<em>串口</em>进行通信。<em>串口</em>通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过<em>串口</em>向智能控制单元发布命令,智能控制单元在<em>接收</em>到正确的命令后作出应答。 在Wi
Linux 串口 一次性read接收不定长的数据(非阻塞,非延时) 程序分析
二话不说,直接上代码。/*********************Copyright(c)************************************************************************ ** Guangzhou ZHIYUAN electronics Co.,LTD ** ** http://www.em...
用C语言中断方式实现串口的读写
#include #include #include #define LSB 0 #define MSB 1 #define RXR 0 #define TXR 0 #define IER 1 #define IIR 2 #define LCR 3 #define MCR 4 #define LSR 5 #define MSR 6
工作中串口读写同步方式下的效率优化记录事件
工作中的项目使用<em>串口</em>的数据提供样机是同步方式的,以前主要用了异步方式的编码;对同步方式的编码没有自己的研究,只是先让可以工作。 但是在实际工作中发现读取的效率有<em>问题</em>:于是自己研究了这部分代码发现找的别人的例子代码是有大<em>问题</em>的。 暂时记录一下: bool CDJCom::ComRead(LPBYTE buf, int &len) { DWORD ReadSize = 0; BOOL rt
用多线程实现串口读写数据以及文件的读写
适合的读者:初学用多线程<em>实现</em>对<em>串口</em>的异步操作,对线程的理解,以及对<em>串口</em>的读写。还有文件的读写都有最基本的使用方式。调试时,可以用<em>串口</em>调试助手一起结合的去学习~
使用ReadFile程序崩溃的原因
在使用这个函数的时候,很多人都不会特意的去看MSDN文档后面的Remarks解释,所以可能有时候会出<em>问题</em>,而且不知道出在哪里。这两个函数的其它参数就不详细解释了,就说说lpNumberOfBytesRead这个参数。MSDN原文:When a read operation reaches the end of a file, this function returns TRUE and sets *
串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
利用<em>串口</em>进行通信,当发送方(A)将数据写入<em>串口</em>后,通过无线或有线方式将数据传送给<em>接收</em>方(B),B通过调用<em>串口</em>读方法comm.read(参数)即可将数据读出。原理十分简单,但最近在利用<em>串口</em>处理SM-42无线传输时,数据总是一段一段的传到B,并不能在comm_DataReceived方法中单纯使用read方法将数据<em>接收</em>完全。我知道用缓存机制,但由于经验少(正在实习),到网上找了找大牛们的方法,并结合自
ReadFile读串口问题
rc = ReadFile(m_hCom,pTempBuf,pNetThreadParam->nBytes+1,&dwReadBytes,NULL);rnrn我的程序在2000下没<em>问题</em>,读到指定的大小,在98下有时候在这句话返回,可是读到的数据是0字节,请问ReadFile在什么情况下返回,为什么会读到0字节?
串口的读写,文件读写
<em>串口</em>操作(下) 以下是我写的一些程序,主要就是<em>实现</em>给<em>串口</em>发送命令,<em>接收</em><em>串口</em>反馈给PC机的信息,并且把信息保存在文件中。
socket 网络接收数据问题(0X00问题)
在用vc++6.0中做网络通讯时,用 recv(  SOCKET s,  char* buf,  int len,  int flags); 发现<em>接收</em>到的数据会 把00截取掉,如服务端发送十六进制的“30 31 32 33 00 34 35”,这边<em>接收</em>到的数据只有“30 31 32 33 ”这个了,不知道什么原因,<em>请教</em>高手! ==============================
linux多线程下打开串口发送和接收数据
1 启动线程1读<em>串口</em> 2 等待3秒后 3 启动线程2写<em>串口</em>,发送字符串后关闭 4 等待10秒 5 关闭两个线程   [c-sharp] view plaincopy #include    #include    #include    #include    #include   #include   #include  
委托方式 接收串口
 Public Class Form1     Dim mSTR As String     Dim strData As String     Dim strDat As String     Dim mRecvByte() As Byte     Dim Hexsj As String     Dim form2 As Form       Private Sub Ser
串口通讯 可以发送十六进制数
这是我们项目的一个<em>串口</em>通讯程序,可以控制机器人的前进。可以发送二进制数也可以发送十六进制数,所以对大家学习很有帮助!
stm8单片机串口应用笔记(一):接收端丢失0x00
先前使用stm8<em>串口</em>,遇到这么一个现象: PC端发送"<em>0x00</em> <em>0x00</em>",<em>接收</em>端(stm8)只收到一个字节"<em>0x00</em>", PC端发送"0xXX <em>0x00</em>",<em>接收</em>端(stm8)只收到一个字节"0xXX", PC端发送"<em>0x00</em> 0xXX",<em>接收</em>端(stm8)只收到两个字节"<em>0x00</em> 0xXX", 上述过程,如果将0xXX改成非零值,则全部OK, 尝试调整波特率没有用,解决方法是将停止位由
C/C++串口通信(2)-重叠操作
重叠操作时,操作还未完成函数就返回。 重叠I/O非常灵活,它也可以<em>实现</em>阻塞。有两种方法可以等待操作完成: 一种方法是用象WaitForSingleObject这样的等待函数来等待OVERLAPPED结构的hEvent成员; 另一种方法是调用GetOverlappedResult函数等待。 //OVERLAPPED结构 typedef struct _OVERLAPPED { // o DW
BCB 串口调试经验(转载)
项目(先这么称呼吧)简介,简单的来说就是计算机通过<em>串口</em>分别控制4个二极管的亮度。上位机部分:只说说我用到的一些函数,和遇到的<em>问题</em>。基本的比如什么是异步通讯啦之类的就不说了,随便网上一搜能找一箩筐!下边是一些函数:函数名 作用 1.CreateFile 打开<em>串口</em> 2.GetCommState 检测<em>串口</em>设置 3.SetCommState 设置<em>串口</em> <br
串口readfile实现阻塞接收
rn因为在<em>串口</em>数据<em>接收</em>时,在<em>readfile</em>中,如果长时间没有<em>接收</em>到,则会执行下一步操作。那么,现在要如何设置才能使rn<em>readfile</em>阻塞,即如果没有数据,则程序就一直等待,知道收到数据为止。rn
stm32 一上电串口发送0x00
现象:stm32 一上电<em>串口</em>发送<em>0x00</em>。 原因:参考https://blog.csdn.net/unsv29/article/details/40855397 (1)STATUS寄存器的上电初始值有<em>问题</em>造成的,Usart的发送数据寄存器有一个缓冲移位寄存器。并且发送有两个状态,一个是发送数据寄存器为空,一个是移位寄存器发送完成。上电后Usart的状态寄存器的发送完成位为0,造成了上电以后会始...
关于ReadFile读串口的疑问
在打开<em>串口</em>的时候使用SetupComm(_hPort,512,512);将<em>串口</em>的缓冲区设置为512字节,但不理解为什么用ReadFile(_hPort, outBuffer, dwToReadLen, &dwReadLen, NULL)读取<em>串口</em>数据时,dwReadLen的值会大于512?(dwReadLen使用前初始化为0)。rn 求高手解答
VC MFC 串口通信(多线程)
VC  MFC  <em>串口</em>通信(多线程) 现在一般用VC写<em>串口</em>通信,大多数人会采取下面的三种方式: 一.直接利用VC 里面的MSComm类进行编程。 二.网上也有一个比较好的类,大多数人也喜欢采用SerialPort(此类其实也比较好用) 三.应用API函数进行<em>串口</em>编程。         以上三种方式编程,我都用过的。。。(当然都不是很深入)。其实前两种用起来比较简单一点。就是对<em>串口</em>初始
非阻塞读取串口终端数据
当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了它才有可能继续运行。与睡眠状态相对的是运行(Running)状态。打开终端使用O_NONBLOCK标志,可以<em>实现</em>非阻塞读取终端数据: #include #include #include #include #include int main(void) { cha
Linux下用C实现串口读写(转)
  http://hi.baidu.com/%CD%FE%B5%C4%C9%FA%BB%EE/blog/item/0110068308c5fb9cf603a6be.html 之前要做一个和<em>串口</em>相关的项目,才认真研究了下<em>串口</em>,首先就是要<em>实现</em><em>串口</em>和PC机的通信。          <em>串口</em>的驱动一般不需要我们写,都是很成熟的驱动,要知道的一点就是你开发板<em>串口</em>的名称,比如ttySAC0,等。所以主要的工作就是编程序,<em>实现</em><em>串口</em>的收发,这当然也好理解,就把<em>串口</em>当成文件,对其进行读写就可以了。         
对PC某串口接收的外部数据进行处理操作的简单C程序 VC++6.0
研二  消防项目  #include #include #include #include HANDLE hCom; double main(void) { hCom=CreateFile(TEXT("COM3"),                         //COM口             设置******************* GENERIC_READ|
串口通信常用API总结
<em>串口</em>通信1、定义<em>串口</em>(COM接口):串行接口(Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以<em>实现</em>双向通信。2、结构    3、连接方式 计算机(上面的<em>串口</em>) &amp;lt;-&amp;gt; (开发板或其他设备上面的)<em>串口</em>分别对应着的概念是:DCE数据发送方<em>串口</em>A&amp;lt;-&amp;gt; DTE数据<em>接收</em>方<em>串口</em>B。A打算发送数据到B中A设置RTS(Requ...
串口通信——接收串口数据并处理(C语言)
<em>串口</em>通信——<em>接收</em><em>串口</em>数据并处理(C语言)
Linux串口程序收发16进制数据错误
<em>问题</em>描述: 通过<em>串口</em>网
串口取时遇到的问题
小弟在做一个<em>串口</em>程序,<em>串口</em>接的是一个GPS卫星天线,它每秒钟返回六行信息。在读<em>串口</em>数据时,得到的不是完整的信息,比如有部分是前一秒的信息,部分是本次的信息(本次的信息也没完全读取),而本次的部分信息(没读完的部分信息)又留给了下一次,如此循环。是不是卫星天线的信息还没完全返回,我就开始了读数据,才导致这样的?请问怎么解决?
使用InternetReadFile时要注意读取完整数据
使用这个api读取数据后,即使数据不完整,该函数不会报任何错,GetLastError也显示操作成功。使用时要注意通过其参数判断是否读取完毕void InternetReadFileEx(HINTERNET request, std::string& data) { DWORD readed = 0; char buffer[1025]; do { ZeroM
VB2010的串口能正常接收数据,但无法发送数值大于127的数据
发送大于127的数据,<em>接收</em>回来却是00或0x3f,直接通过STM32发送0XFF这些大于127的数据,<em>接收</em>正常,确定是发送不了大于127的数据,在网上查了很久终于有结果,SerialPort1.Write(sendDATA, 0, k),sendDATA是只能发送ASCII值0-127,超出范围就会被0或3F代替(不知道对不对,我<em>串口</em><em>接收</em>是这样的)我用的是VB2010,在<em>串口</em>初始化时候加上:Me....
关于CubeMX的串口全双工接收发送锁死的问题
一,现象描述 在使用STM32 CubeMX生成的工程<em>中用</em>到了<em>串口</em>2,发送开启了DMA模式,<em>接收</em>使用中断,每次<em>接收</em>一个字节,在回调函数中调用HAL_UART_Receive_IT(&huart2,(u8 *)&rx_data_2,1)<em>接收</em>开启函数。刚开始工作还算正常,但运行一段时间后(时间长度随机),调试窗口上<em>串口</em>数据不再更新,使用示波器检查引脚仍有数据<em>接收</em>到,STM32整体运行正常。初步判断,
Qt串口通信接收数据不完整的解决方法
    在使用<em>串口</em><em>接收</em>数据时,当数据量大的时候会出现数据<em>接收</em>不完整的情况。因为<em>串口</em>数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在<em>串口</em>读到起始标志时立即发送,并不保证一定是当前所发数据的起始部分。因此<em>串口</em>通信双方在通信前应制定好通信协议,规定好数据的起始和结束标志,<em>串口</em>当读到完整的起始和结束标志之后,才认定读完一条完整的数据。    本例<em>中用</em><em>串口</em>定时发...
英文邮件礼仪:向教授请教学术问题
英文邮件礼仪:向教授<em>请教</em>学术<em>问题</em>   邮件主题 邮件主题(subject)不需要写自己的名字。名字是在邮件系统设置里设定好的,在发件时会替换显示实际地址,所以无需在主题里再写一遍。 [关键内容是要在主题里就写明白是否有推荐人,以及主要是什么事。很多教授只看主题。]   一个好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"De
linux,串口读取指定数目的字节,串口读取数据错误
用到<em>串口</em>读取数据,要求数据
Linux UART无法接受‘\r’即0X0D
1.<em>问题</em>      当uart接受到0x0d即‘\r’时,从驱动读出来却是0x0a      原因:UART配置<em>问题</em> 2.解决方法 参考下列配置方式: options.c_cflag &= ~PARENB; options.c_iflag &= ~INPCK; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~
pb + mscomm.ocx 进行串口通讯,支持16进制发送,解决0x00问题
pb使用MSCOMM32.ocx控件进行<em>串口</em>通讯,支持16进制字符串发送,解决PB无法识别<em>0x00</em>的<em>问题</em>,发送数据已测试,<em>接收</em>数据功能未经测试
关于单片机串口发送时初始发送的数据第一个总是00的问题解决
在调试STM8的<em>串口</em>时候,<em>串口</em>IO初始化,<em>串口</em>配置,发送数据调试~~ 连接好<em>串口</em>线后,发现初始化后发送的第一个数据总是00,后面的数据才是正常的数据。 折腾了大半天,终于发现了原因了,那就是初始化<em>串口</em>后不能马上发送数据,要经过一定时间延迟。 <em>问题</em>代码如下: CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//运行在16Mhz Init_GPI
文章热词 双目视觉问题 特征点问题 相机标定问题 最优化问题 统计学稳健估计问题
相关热词 c++ 关于unique的问题 c#接收串口数据线程问题 c++接收串口程序 c++ linux 读串口 请教python学习路线 初学python请教学习路线
我们是很有底线的