串口通信-串口程序发送接收数据问题 (没有据传输)

问题描述

串口程序发送接收数据问题 (没有据传输)

//接收数据
void ReceiveChar()
{

BOOL istrue;
DWORD de = 0;
char buffer[MAX] = { 0 };
DWORD data;
BOOL f;
DWORD doe;
COMSTAT coms;
BOOL m;
OVERLAPPED over;
/*********串口事件的设置***************/
istrue = SetCommMask(hComm, EV_RXCHAR | EV_TXEMPTY);
if (istrue)
{
printf("串口事件设置成功!");
}
else
{
printf("串口事件设置失败!请重试");
}
/***************获取串口缓存区数据大小*********************/
istrue = 0;
while (!istrue)
{
istrue = WaitCommEvent(hComm, &de, &over);
}
if (istrue)
{
if (de == EV_RXCHAR)
{
ClearCommError(hComm,&doe,&coms);
if (coms.cbInQue>0)
{
f=ReadFile(hComm, &buffer, coms.cbInQue,& data, &over);
if (!f)
{

m = GetOverlappedResult(hComm, &over,& data, true);
while (!m)
{
if (GetLastError() == ERROR_IO_PENDING)
{
m = GetOverlappedResult(hComm,&over,& data, true);
}
}
}

        }
    }
}
for (int i = 0; i <MAX;i++)
{
    printf("%c",buffer[i]);
}

}

void WriteChar()
{
BOOL f;
char buffer[] = { "通过串口进行数据发送" };
DWORD data = sizeof(buffer);
DWORD datal, n = 0;
OVERLAPPED over;
f = WriteFile(hComm, &buffer, data, &datal,&over);
if (!f)
{
BOOL m;
m = GetOverlappedResult(hComm, &over, &data, true);
while (!m)
{
if (GetLastError() == ERROR_IO_PENDING)
{

            m = GetOverlappedResult(hComm,& over, &data, true);
            n += datal;
            if (n==data)
            {
                break;
            }
        }
    }
}

}

时间: 2024-09-21 15:43:36

串口通信-串口程序发送接收数据问题 (没有据传输)的相关文章

用C#做一个淘宝登陆,是用程序发送接收数据,不是用浏览器

问题描述 做一个C#淘宝登陆程序怎么做,想做一个问题处理的程序但是不知道如何做淘宝登陆,蛋疼! 解决方案 解决方案二:简单下个Fiddler2在官方插件里下代码生成器把点登陆时的web访问跟出来,往代码生成器里一拖把自动生成的代码帖进vs就可以了...但是,淘宝想在脚本里埋个标志是非常容易的事,不管你本事再大他想查你是用工具登陆的,就一定查的到.风险你自己考虑==解决方案三:不要蛋疼,看看下面文章,在下载源码(提取码是白色字体,看不见的话,全选一下就看见了)另外

串口通讯-vc串口通信的程序求解

问题描述 vc串口通信的程序求解 vc初学者要写一个串口通信的程序,串口如何通信的不是很了解啊! 解决方案 VC串口通信 解决方案二: VC中采用MSCOMM控件,首先对串口进行初始化,然后在OnOnCommMscomm函数中处理接收的数据. 解决方案三: http://blog.csdn.net/jax_lee/article/details/6764408图文并茂http://blog.csdn.net/a_runing_man/article/details/9947343代码http:/

求一VB.NET通过modbus发送接收数据的例程

问题描述 因为没接触过vb.net,所以想找个完整的例子程序.网上查的都是用VB的mscomm这个控件,而visualstudio2005下的vb.net是serialport,许多属性都随之改变.希望有个这方面的高手能给个完整的modbus协议下发送接收数据的例子程序.万分感谢 解决方案 解决方案二:VB.NET这方面的例子确实很少,LZ可以找些C#代码用专门的转换网站转过来看下就行了!解决方案三:没做过这类,可以上msdn看看.

串口通信,频繁发送数据, ReadExisting()得到一样的数据

问题描述 20ms一次,朝串口发数据.用ReadExisting()接收数据同样的程序,有些电脑反应来得及,每次收回正常数据.有些电脑,数据就一直不变,就跟堵死了一样.把自己的程序关掉,用别的串口工具发送接收都是正常的.必须把程序重启,自己做的程序才又恢复正常!点解?谢谢 解决方案 解决方案二:代码有问题呗发送之后不要立即接收,没法确保收到完整的数据加个足够长的sleep试试或者用recieved事件,多次收到的数据拼接一下话说,20ms一次,你波特率设置的多少啊,发多少字节,确保20ms能够完

串口通信java程序问题

问题描述 从网上下载了那个串口通信的安装包之后,根据上面的步骤修改好了环境变量后想要运行包裹中的SimpleRead程序,但是每次运行都是出现staticerror:SimpleReadclassundefined.求大神指导!!!!急求解决方案!!! 解决方案 解决方案二:类未定义-缺少这个类的class文件吧--解决方案三:importjava.io.*;importjava.util.*;importjavax.comm.*;publicclassSimpleReadimplementsR

串口通信-串口为什么会被拒绝访问????

问题描述 串口为什么会被拒绝访问???? import time import sys import serial ser = serial.Serial( #下面这些参数根据情况修改 port='COM8', baudrate=9600, stopbits=1, bytesize=8 ) data = '' while ser.inWaiting() > 0: data += ser.read(1) if data != '': print data 利用uart串口通信的时候串口8为什么会被

Socket发送接收数据实例

网上经常有关于Socket的问题~教程~可是都非常官方,其实代码我们都知道(F1帮助文档里就有),只是由于没有可测试用的Socket服务器..一直不能做测试跟进一步的研究.闪吧新社区+MT:G,{,P+?B7z 今天打开已经很久没用的<易语言>,了一个简单的socket服务器..其实我不知道算不算是socket服务器,只是监听端口,接收来自客户端的数据,发送数据到客户端等等.不过在flash的socket例程下连接并发送接收成功,所以应该也算是吧..(ps:易语言,一个中文的编程软件,别笑我,

八、mini2440裸机程序之UART(2)UART0与PC串口通信【转】

转自:http://blog.csdn.net/shengnan_wu/article/details/8309417 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.相关原理图   2.相关寄存器介绍与配置       1)与管脚相关   ①GPHCON   注: 配置成UART0功能: GPHCON |= 10 10 10 10b(还要在GPHUP里把管脚禁止上拉)       2)与中断相关 上传图片好麻烦,跟以前相关的这里就不贴了       3)与UART0相关 ①ULCON

VisualBasic串口通信程序设计

1mscomm.vbx通信控件描述 mscomm.vbx通信控件可直接从vb的toolbox中加入窗体form,即可用其进行通信.若toolbox中无此控件,则用tools的customcontrols将mscomm.vbx从windows的system子目录中加入vb的toolbox中. 1.1通信方式 mscomm.vbx有2种不同的方式来处理和解决各类通信软件的开发和设计问题 1.事件驱动.它与c/c 写windows软件时的窗口回调函数类似,是1种功能强大的处理问题的方法.在实际工作中,