| 楼主 发表于: 2007-10-20 10:48:03 最近用API函数编写了串口通信程序 handlePort_ = CreateFile(portName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); ReadFile(handlePort_, inputData, sizeBuffer, & length, NULL) == 0) SerialThread::Run() { char mess[MAX_MESSAGE]; unsigned int lenBuff = MAX_MESSAGE; unsigned long lenMessage,len,k; static CString outPut,strtemp; if (SCC::serialCtl().read_scc(mess,lenBuff,lenMessage) == TRUE) { if (lenMessage > 0) { outPut = outPut + mess; ptrDlg->SetDlgItemText(IDC_MONITOR_REC,mess); CFile m_file; m_file.Open("data.txt",CFile::modeCreate |CFile::modeWrite |CFile::typeBinary); m_file.Write(outPut,outPut.GetLength()); m_file.Close(); m_file.Flush(); */ } 这样的话我存成的文件是字符,用二进制模式打开可以看到数据是正确的 可是现在想直接看到数据,本来以为可以把mess直接转换成字符,例如从串口收到0x14,则转换成"14" 可是mess[100]没有办法变成16进制数型,这个0x14在哪里啊,应该怎么处理,数据都在这里了,可就是显示不出来很郁闷 |
#1得分:10 回复于: 2007-10-20 12:35:33 转换一下:
顺序不对的话,自己修改一下。 | |||
| #2得分:0 回复于: 2007-10-20 13:36:21 如果嫌麻烦,可以用sprintf(mess,"%x",value); |
| #3得分:0 回复于: 2007-10-20 14:09:52 'sprintf' : cannot convert parameter 1 from 'char' to 'char *' 2楼的方法看来也是不行,我是从缓存中读取的,mess有100个啊 |
| #4得分:20 回复于: 2007-10-20 14:21:51
| ||
| #5得分:0 回复于: 2007-10-20 14:25:25
|
联系客服