1、OpenComm
函数原型: HANDLE OpenComm(int portNo);
功能说明: 打开串口。
返回值: 成功时返回串口句柄,失败时返回INVALID_HANDLE_VALUE(-1)
2、ReadTag
函数原型: BOOL ReadTag(HANDLE hCom, BYTE memBank, BYTE address, BYTE length, BYTE* data);
功能说明: 读标签内容。
返回值: 成功时返回TRUE(1),失败时返回FALSE(0)
参数: ●——hCom: 串口句柄
●——memBank: 要读的区域。各值的意义如下:
0x00——保留区
0x01——EPC区
0x02——TID区
0x03——用户区
●——address: 要读区域中的地址,取值为范围0-7。
●——length: 要读取的长度,取值范围是1到8(单位是Word,
1Word = 2Byte)。●——data: 要写入内容的地址(输出参数)
OpenComm的调用例程:
HANDLE hCom = OpenComm(1); // 打开串口1
ReadTag的调用例程:
BYTE data[2];
if(::ReadTag(hCom, 0x01, 0x03, 1, data)) // 读EPC区地址02开始的1个// 字(2字节)内容
{
CString strData;
strData.Format("%02X %02X ", data[0], data[1]);
AfxMessageBox("读EPC区地址02开始的1个字(2字节)内容成功! "+strData);
}
现在com口已经可以正常打开,但是读不了卡,求C#代码
现在主要问题是com口都不能打开,更别提读卡了
追答额,不好意思,忘了这一点了,串口打不开的话估计不是你调用的问题了。不过你为什么两次打开呢?你第一次打开的时候没有获取句柄,接着又打开一遍,这第二遍应该是打开失败的,正确的做法应该是把hcom设置成全局变量,在你的load函数里面就获取,到读取的时候再用。但是不知道你的问题原因是不是这个,我觉得这里是不合理的。