串口通信 数据发送不出去
#pragma once
#include "Windows.h"
//#include "Defines.h"
//#include "DbConnection.h"
//#include "Comm.h"
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#define REF 10000000
int main (void)
{
HANDLE m_hComm;
DCB dcb; // 串口控制块
COMMTIMEOUTS timeouts = { // 串口超时控制参数
100, // 读字符间隔超时时间: 100 ms
1, // 读操作时每字符的时间: 1 ms (n个字符总共为n ms)
500, // 基本的(额外的)读超时时间: 500 ms
1, // 写操作时每字符的时间: 1 ms (n个字符总共为n ms)
100}; // 基本的(额外的)写超时时间: 100 ms
DWORD dwNumWrite;
int freq, Fres, Intt, FRAC, MOD;
unsigned char sendBUFF[24];
while(1){
/* sendBUFF[] 内容的计算,不重要,故省略 */
m_hComm = CreateFile("COM11", // 串口名称或设备路径
GENERIC_READ | GENERIC_WRITE, // 读写方式
0, // 共享方式:独占
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件
if(m_hComm == NULL)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}
GetCommState(m_hComm, &dcb); // 取DCB
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(m_hComm, &dcb); // 设置DCB
SetupComm(m_hComm, 4096, 1024); // 设置输入输出缓冲区大小
SetCommTimeouts(m_hComm, &timeouts); // 设置超时
WriteFile(m_hComm, sendBUFF, 24, &dwNumWrite, NULL);
printf("发送数据量:%d\n", dwNumWrite);
}
}
运行的结果显示发送的数据为0,也就是我的sendBUFF完全没有发出去,想请问下各位大神我的代码哪里出了问题?
头文件之所以注释掉3个,是因为我参考的代码中有,但我找不到这几个文件,不用他们程序可以运行,不知是否是这个原因?
其中,判定串口是否成功打开的语句如果改成
if(m_hComm == INVALID_HANDLE_VALUE) return FALSE; 则直接报串口打开失败
相关推荐
STM32串口DMA模式发送&接收实现,高速串口通信(1.5Mbps)不丢数据
源码来自:https://pan.quark.cn/s/a4b39357ea24 CMSIS NN Lib example armnnexamplecifar10 for Cortex-M4 and Cortex-M7. The example is configured for uVision Simulator.
STM32串口DMA模式发送&接收实现,高速串口通信(1.5Mbps)不丢数据
STM32高速串口通信DMA收发实现 测试平台 平台 主频 BSP库 串口 STM32F030C8T6 48MHz 标准库 UART1、UART2 STM32F103ZET6 72MHz 标准库 UART1、UART2 STM32H743XIH6 400MHz HAL/LL库 UART5 STM32F407VCT6 168MHz HAL/LL库 UART1 实现功能 收/发环形缓冲区 不定长度接收处理 高速(1.5Mbps)通信不丢数据 关键实现 DMA发送模式 线程循环查询发送环形缓冲区数据,然后启动MDA传输 DMA传输完成中断,连续发送 定时器中断周期发送 DMA接收模式 DMA缓存半满中断(如CPU硬件支持,可使用DMA双缓存机制) DMA缓存传输完成中断 串口空闲中断实现
stm32-uart-dma:STM32串口DMA模式发送&接收实现,高速串口通信(1.5Mbps)不丢数据
STM32高速串口通信DMA收发实现 测试平台 平台 晶振 BSP库 串口 STM32F030C8T6 12MHz 标准库 UART1、UART2 STM32F103ZET6 8MHz 标准库 UART1、UART2 ... 实现功能 收/发环形缓冲区 不定长度接收处理 高速(1.5Mbps)通信不丢数据 关键实现 DMA发送模式 线程循环查询发送环形缓冲区数据,然后启动MDA传输 DMA传输完成中断,连续发送 定时器中断周期发送 DMA接收模式 DMA缓存半满中断(如CPU硬件支持,可使用DMA双缓存机制) DMA缓存传输完成中断 串口空闲中断实现 其他 更详细的描述过程参考文章
Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整的解决方法
主要介绍了Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整的解决方法,需要的朋友可以参考下
MFC串口通信发送16进制数据的方法
本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下 MFC串口通信会使用m_mscomm控件。 发送数据一般是在edit control 里输入自己想发送的内容,然后点击send button。 如果直接发送字符串内容,通过下面代码(send button内写入)即可: UpdateData(true); //读取编辑框内容 m_mscomm.put_Output(COleVariant(m_EditSend)); m_EditSend.Empty(); //发送后清空输入框 UpdateData(false); //更新编辑框内容 但是这样发送的是字符


