我在Config.ini里定义串口节点
[Serial Ports]
Port=COM3程序是这样的wchar_t * GetComPort()
{
wchar_t * strComPort=L"COM1";
WCHAR serial_ports[50];
TCHAR fileName[100];
TCHAR config_dir[100];
memset(serial_ports,'\0',50);
memset(fileName,0,sizeof(fileName));
memset(config_dir,0,sizeof(config_dir)); // 获取可执行程序位置
GetModuleFileName(NULL,fileName,100);

// 提取配置文件路径
int length = 0;
int i = 0; while(fileName[length]!=_T('\0'))
{
length++;
} bool bOkCut=false;
int ixx=0;
///截取最后一个'/'之前的所有字符
for (ixx=length; ixx>=0; --ixx)
{
if(fileName[ixx]== '\\')
bOkCut =true;
if(bOkCut)
{
config_dir[ixx] = fileName[ixx];
i++;
}
}
config_dir[i] = 'C';
config_dir[i+1] = 'o';
config_dir[i+2] = 'n';
config_dir[i+3] = 'f';
config_dir[i+4] = 'i';
config_dir[i+5] = 'g';
config_dir[i+6] = '.';
config_dir[i+7] = 'i';
config_dir[i+8] = 'n';
config_dir[i+9] = 'i';
config_dir[i+10] = '\0';
// 端口号配置
if(0 == GetPrivateProfileString(L"Serial Ports", L"Port", L"", serial_ports, _countof(serial_ports), config_dir))
{
thisApp->printf("没有找到config.ini或相关配置\n");
}
else
{
//返回com值
}
}
现在的问题是serial_ports是WCHAR型的,
如何转换成wchar_t *本人初学VC++,望高手指教打开串口代码如下:BOOL Comm::OpenComm(wchar_t * pPort, int nBaudRate, int nParity, int nByteSize, int nStopBits)
{
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 m_hComm = CreateFile(pPort, // 串口名称或设备路径
GENERIC_READ | GENERIC_WRITE, // 读写方式
0, // 共享方式:独占
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件 if(m_hComm == INVALID_HANDLE_VALUE) return FALSE; // 打开串口失败 GetCommState(m_hComm, &dcb); // 取DCB dcb.BaudRate = nBaudRate;
dcb.ByteSize = nByteSize;
dcb.Parity = nParity;
dcb.StopBits = nStopBits; SetCommState(m_hComm, &dcb); // 设置DCB SetupComm(m_hComm, 4096, 1024); // 设置输入输出缓冲区大小 SetCommTimeouts(m_hComm, &timeouts); // 设置超时 return TRUE;
}