//打开串口,调用api函数
BOOL CPrtInfoDlg::OpenCommunication(LPCSTR portnum)
{
// 增加dos设备
CloseHandle(m_hComm);//每次打开串口时,先关闭此串口,避免重复打开后,返回值不一样,不利于后边操作
m_hComm = CreateFile(portnum,//portnum为端口号的字符串,api函数打开方式,对于10一上的端口号,参数portnum格式需要为"\\\\.\\COM10"
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
//MessageBox("3333333333332",NULL,MB_OK);
if(m_hComm == INVALID_HANDLE_VALUE)
MessageBox("此串口无效。",NULL,MB_OK);
else
{
// 禁用读写溢出,使用总线特性
//MessageBox("进入串口配置。",NULL,MB_OK);
COMMTIMEOUTS cm;
if (GetCommTimeouts(m_hComm, &cm))
{
cm.ReadIntervalTimeout = 100; // 首字符
cm.ReadTotalTimeoutMultiplier = 0; // 字符间距
cm.ReadTotalTimeoutConstant = 500; // 连续字符间距
cm.WriteTotalTimeoutMultiplier = 0; // 字符间距
cm.WriteTotalTimeoutConstant = 0; // 连续字符间距
SetCommTimeouts(m_hComm, &cm);
}
// 禁用自身缓冲区
SetupComm(m_hComm, 4096, 4096);
COMSTAT cstat;
DWORD dwError = 0;
ClearCommError(m_hComm, &dwError, &cstat);
//MessageBox("11111111",NULL,MB_OK);
// 波特率
DCB dcb = {0};
memset(&dcb, 0, sizeof(dcb));
dcb.DCBlength = sizeof(DCB);
if (GetCommState(m_hComm, &dcb))
{
dcb.ByteSize = 8;//设置数据位
dcb.StopBits = ONESTOPBIT;//设置停止位
dcb.BaudRate = CBR_19200;//设置波特率
//dcb.Parity = EVENPARITY;
dcb.Parity = NOPARITY;//设置校验位
SetCommState(m_hComm, &dcb);
SetDlgItemText(IDC_EDIT1, _T("串口已打开!"));
}
// 清空开用
PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_RXABORT | PURGE_RXABORT);
}
//获取系统时间
//获得时间
CString str; //获取系统时间
CTime tm1;
tm1=CTime::GetCurrentTime();
str=tm1.Format("%Y%m%d%H%M%S");//得到顺序 年月日时分秒 的字符串
str=tm1.Format("%Y%m%d%H%M%S%w");//得到顺序 年月日时分秒 星期 的字符串,%w表示星期
//MessageBox(str,NULL,MB_OK);
//这里得到的星期,0表示星期日
char idayofweek = tm1.GetDayOfWeek();//通过这个函数也能得到单独的 星期
str=str+idayofweek;//这里是将年月日时分秒 星期 两个字符串连接为一个字符串
/**********************************************************************************************/
BOOL CPrtInfoDlg::OpenCommunication(LPCSTR portnum)
{
// 增加dos设备
CloseHandle(m_hComm);//每次打开串口时,先关闭此串口,避免重复打开后,返回值不一样,不利于后边操作
m_hComm = CreateFile(portnum,//portnum为端口号的字符串,api函数打开方式,对于10一上的端口号,参数portnum格式需要为"\\\\.\\COM10"
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
//MessageBox("3333333333332",NULL,MB_OK);
if(m_hComm == INVALID_HANDLE_VALUE)
MessageBox("此串口无效。",NULL,MB_OK);
else
{
// 禁用读写溢出,使用总线特性
//MessageBox("进入串口配置。",NULL,MB_OK);
COMMTIMEOUTS cm;
if (GetCommTimeouts(m_hComm, &cm))
{
cm.ReadIntervalTimeout = 100; // 首字符
cm.ReadTotalTimeoutMultiplier = 0; // 字符间距
cm.ReadTotalTimeoutConstant = 500; // 连续字符间距
cm.WriteTotalTimeoutMultiplier = 0; // 字符间距
cm.WriteTotalTimeoutConstant = 0; // 连续字符间距
SetCommTimeouts(m_hComm, &cm);
}
// 禁用自身缓冲区
SetupComm(m_hComm, 4096, 4096);
COMSTAT cstat;
DWORD dwError = 0;
ClearCommError(m_hComm, &dwError, &cstat);
//MessageBox("11111111",NULL,MB_OK);
// 波特率
DCB dcb = {0};
memset(&dcb, 0, sizeof(dcb));
dcb.DCBlength = sizeof(DCB);
if (GetCommState(m_hComm, &dcb))
{
dcb.ByteSize = 8;//设置数据位
dcb.StopBits = ONESTOPBIT;//设置停止位
dcb.BaudRate = CBR_19200;//设置波特率
//dcb.Parity = EVENPARITY;
dcb.Parity = NOPARITY;//设置校验位
SetCommState(m_hComm, &dcb);
SetDlgItemText(IDC_EDIT1, _T("串口已打开!"));
}
// 清空开用
PurgeComm(m_hComm, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_RXABORT | PURGE_RXABORT);
}
//获取系统时间
//获得时间
CString str; //获取系统时间
CTime tm1;
tm1=CTime::GetCurrentTime();
str=tm1.Format("%Y%m%d%H%M%S");//得到顺序 年月日时分秒 的字符串
str=tm1.Format("%Y%m%d%H%M%S%w");//得到顺序 年月日时分秒 星期 的字符串,%w表示星期
//MessageBox(str,NULL,MB_OK);
//这里得到的星期,0表示星期日
char idayofweek = tm1.GetDayOfWeek();//通过这个函数也能得到单独的 星期
str=str+idayofweek;//这里是将年月日时分秒 星期 两个字符串连接为一个字符串
/**********************************************************************************************/