16,471
社区成员
发帖
与我相关
我的任务
分享
#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);
}
}
if(m_hComm == INVALID_HANDLE_VALUE) return FALSE;
if(m_hComm == INVALID_HANDLE_VALUE)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}
[/quote]
因为你还是拿到的 INVALID_HANDLE_VALUE,可以用GetLastError查看一下[/quote]
不管我外部设备有没有插入,都是返回错误信息2。但是我设备插入后设备管理器中是能看到COM11的,但似乎程序读不出它。我对串口通信不太懂,不知道是不是我之前的程序哪里写错了?或者是注释掉的那几个头文件的原因??能否指导一下,十分感谢。[/quote]
那你打开的串口是否为正确的地址。[/quote]
我要打开com11口,是否只要写CreateFile("COM11",...........即可?还是要另外设置一些什么?if(m_hComm == INVALID_HANDLE_VALUE)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}
[/quote]
因为你还是拿到的 INVALID_HANDLE_VALUE,可以用GetLastError查看一下[/quote]
不管我外部设备有没有插入,都是返回错误信息2。但是我设备插入后设备管理器中是能看到COM11的,但似乎程序读不出它。我对串口通信不太懂,不知道是不是我之前的程序哪里写错了?或者是注释掉的那几个头文件的原因??能否指导一下,十分感谢。[/quote]
那你打开的串口是否为正确的地址。if(m_hComm == INVALID_HANDLE_VALUE)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}
[/quote]
因为你还是拿到的 INVALID_HANDLE_VALUE,可以用GetLastError查看一下[/quote]
不管我外部设备有没有插入,都是返回错误信息2。但是我设备插入后设备管理器中是能看到COM11的,但似乎程序读不出它。我对串口通信不太懂,不知道是不是我之前的程序哪里写错了?或者是注释掉的那几个头文件的原因??能否指导一下,十分感谢。if(m_hComm == INVALID_HANDLE_VALUE)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}
[/quote]
因为你还是拿到的 INVALID_HANDLE_VALUE,可以用GetLastError查看一下if(m_hComm == INVALID_HANDLE_VALUE)
{
printf("打开串口失败");
return FALSE; // 打开串口失败
}