VC++MFC用API函数做串口通行,传递16进制数据问题

WriteFile函数写串口时我用的是char型数组存放数据的,把16进制数据进行单个字符拆分再放到char型数组
中,如我发送01 00 AE,我先把他们拆成0 1 0 0 A E,让后放到6个字符的char数组中,接收端直接用char型数组接收字符,然后对字符进行处理还原成原来的要发的16进制字符串。这种方法我试过不会出错,但感觉这个做传输的数据量变大了,然后直接把16进制的数放到char型数组,接收端readfile函数还是用char型函数接收,接收的是ascii,下面就遇到问题了
1.数据00那个发送不了。直接从00那断掉了;
2.readflie函数能不能直接用BYTE型数组接收二进制流,怎么用
3.怎么用WriteFlie函数发送16进制数据,我那种方式是不是效率很低,有什么好的方法没。
求大神指点。以前用VB做串口时直接调用控件的,好多参数没这么仔细研究过,望大神指教。

WriteFile 是不是这个
BOOL WINAPI WriteFile(
__in HANDLE hFile,
__in LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out LPDWORD lpNumberOfBytesWritten,
__in LPOVERLAPPED lpOverlapped
);
16进制数据怎么存放的 INT 类型 CHAR 类型
说清楚 我教你用二进Z的方法追问

能具体说下么

追答

你没有回答我的问题

追问

我是把16进制用0x00直接赋值给数组的比如a[0]=0x00,函数就是你说的那个

追答

首先你没有回答我的问题.
我只能这样说说。
DWORD* pData=(DWORD*)malloc(你要的内存大小);Data就是lpBuffer;
如果你的16进制数据是CHAR数组;100个数据,你就这样写;

方法一:
BYTE data[100]; //这里面是你的数据;
PBYTE pTemp=(PBYTE)pData;
for(int i=0;i>100;i++)
{
pTemp[i]=data[i];
}
WriteFile(你的文件句柄,pData,100,pTemp,NULL);
方法二:
BYTE data[100];
PBYTE pTemp=NULL;
memcpy(pData,data,100);
WriteFile(你的文件句柄,pData,100,pTemp,NULL);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-09
Visual C++_Turbo C串口通信编程实践