首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于c#串口通讯有关问题

2013-04-09 
关于c#串口通讯问题本帖最后由 dahaianb 于 2013-04-06 13:31:20 编辑最近在研究c#通过串口与rfid读卡器进

关于c#串口通讯问题
本帖最后由 dahaianb 于 2013-04-06 13:31:20 编辑 最近在研究c#通过串口与rfid读卡器进行通讯,废话不多,请大家先看下面的rfid写epc号的协议:
8.2.4 写EPC号
这个命令向电子标签写入EPC号。写入的时候,天线有效范围内只能有一张电子标签。


命令:
LenAdrCmd         Data[]           CRC-16
ENumPwd WEPC
0xXX0xXX0x040xXX4Byte变长LSBMSB
参数解析:
ENum:1个字节。要写入的EPC的长度,以字为单位。不能为0,也不能超过15,否则返回参数错误信息。

Pwd:4个字节的访问密码。32位的访问密码的最高位在Pwd的第一字节(从左往右)的最高位,访问密码最低位在Pwd第四字节的最低位,Pwd的前两个字节放置访问密码的高字。在本命令中,当EPC区设置为密码锁、且标签访问密码为非0的时候,才需要使用访问密码。在其他情况下,Pwd为零或正确的访问密码。

WEPC:要写入的EPC号,长度必须和ENum说明的一样。WEPC最小1个字,最多15个字,否则返回参数错误信息。

应答:
LenAdrreCmdStatusData[]CRC-16
0x050xXX0x040x00——LSBMSB


我根据上面的协议设计出相关通讯代码如下:


byte[] data = new byte[14];
                data[0] = 11;
                data[1] = 0x00;
                data[2] = 0x04;
                data[3] = 2;
                data[4] = 0;
                data[5] = 0;
                data[6] = 0;
                data[7] = 0;
                data[8] = 0;
                data[9] = 0;
                data[10] = 0;
                data[11] = 0;
                CalculateCRC(ref data, 0, 12);
                byte[] me = Write(data, 0, 14);

public byte[] Write(byte[] date, int offset, int count)
        {
            port.WriteTimeout = 3000;
            port.Write(date, offset, count);
            System.Threading.Thread.Sleep(3000);
            port.ReadTimeout = 2000;
            int cou = port.BytesToRead;
            byte[] da = new byte[cou];
            port.Read(da, 0, cou);
            port.DiscardInBuffer();
            port.DiscardOutBuffer();
            return da;
        }





CalculateCRC函数是用来校验CRC16的,经过测试那函数应该没有问题,现在问题是我以上面的代码访问rfid读卡器后并没有收到任何回复,也没有能够成功将epc号写入卡内,不清楚上面的代码哪里出了问题,请高手指教指教,十分感谢…… c#?串口通讯?rfid?byte
[解决办法]
貌似看不太懂
[解决办法]
据我所知,RFID卡的读写不是一条命令可以解决的,首先要解决的就是判断是否有一张RFID卡进入了感应区,那个命令应该先进行才对。
[解决办法]
怀疑你的串口设置,是否真的和RFID连接成功,
用串口工具,发你的数据看看,如果有返回,就先查你连接的代码吧
[解决办法]
引用:
那个命令格式有点乱,我重新发下:
Len    Adr   Cmd          Data[]                  CRC-16
0xXX  0xXX   0x04     ENum   Pwd   WEPC          LSBMSB
                      0xXX  4Byte  变长

上面就是rfid读卡器给……


这个格式还是没看懂。。。能整齐点吗
分别代表什么意思呢,你这个是上下对应的关系呢还是所有的合在一起为一条指令呢

热点排行