简单的串口问题
#include "stdafx.h"
#include "windows.h"
#include "tchar.h"
using namespace System;
HANDLE m_port;
DCB m_dcb;
COMMTIMEOUTS m_commtimeouts;
/*
int main(array<System::String ^> ^args)
{
*/
m_port = CreateFile(_T("COM1"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(m_port == INVALID_HANDLE_VALUE)
{
Console::WriteLine(L"no handle");
return false;
}
SetupComm(m_port, 512, 512);
m_dcb.DCBlength = sizeof(DCB);
GetCommState(m_port, &m_dcb);
m_dcb.BaudRate = 19200;
m_dcb.ByteSize = 8;
m_dcb.StopBits = 1;
m_dcb.fParity = NOPARITY;
SetCommState(m_port, &m_dcb);
m_commtimeouts.ReadIntervalTimeout = MAXWORD;
m_commtimeouts.ReadTotalTimeoutConstant = 10;
m_commtimeouts.ReadTotalTimeoutMultiplier = 10;
m_commtimeouts.WriteTotalTimeoutConstant = 50;
m_commtimeouts.WriteTotalTimeoutMultiplier= 100;
SetCommTimeouts(m_port, &m_commtimeouts);
DWORD dw;
TCHAR* ch = L"789";
//char* ch = "789";
PurgeComm(m_port,PURGE_RXCLEAR|PURGE_TXCLEAR);
WriteFile(m_port, ch, /*strlen(ch)*/wcslen(ch)*sizeof(TCHAR), &dw, 0);
return 0;
/*
}
*/
上述代码在pc上向wince发数据显示正常
但是从wince里向pc上发数据显示乱码
请教原因。
补充:已知pc串口助手和wince串口助手已经通讯过而且正常工作。
[解决办法]
听说wince上只支持unicode,不知道_T,L这些宏混用是否有问题。
[解决办法]
用ASCII试一试,以判定是否是编码的问题