初学vc串口编程,以下是我的代码,我想实现自发自收,不知道怎么不行?大家帮忙看看哈,谢谢
#include <windows.h>
#include<stdio.h>bool setMeasureMode(){ HANDLE 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
hComm = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); //打开端口(com1?)
if(hComm == (HANDLE)-1)
return FALSE;
GetCommState(hComm, &dcb); // 取DCB
dcb.BaudRate = 57600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb); // 设置DCB
SetupComm(hComm, 4096, 1024); // 设置输入输出缓冲区大小
::SetCommTimeouts(hComm, &timeouts); // 设置超时
// 写串口
DWORD dwNumWrite;
WriteFile(hComm, "MDS,04\n", 7, &dwNumWrite , NULL); //发送数据 char buff[10];
ReadFile(hComm, buff, 7, &dwNumWrite , NULL); //接收数据
CloseHandle(hComm); //关闭端口 return TRUE;
}void main(){
setMeasureMode();
}
#include <windows.h>
#include<stdio.h>bool setMeasureMode(){ HANDLE 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
hComm = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); //打开端口(com1?)
if(hComm == (HANDLE)-1)
return FALSE;
GetCommState(hComm, &dcb); // 取DCB
dcb.BaudRate = 57600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb); // 设置DCB
SetupComm(hComm, 4096, 1024); // 设置输入输出缓冲区大小
::SetCommTimeouts(hComm, &timeouts); // 设置超时
// 写串口
DWORD dwNumWrite;
WriteFile(hComm, "MDS,04\n", 7, &dwNumWrite , NULL); //发送数据 char buff[10];
ReadFile(hComm, buff, 7, &dwNumWrite , NULL); //接收数据
CloseHandle(hComm); //关闭端口 return TRUE;
}void main(){
setMeasureMode();
}
最终你会找到那一步出了问题,那个时候有针对性的检查就方便多了。