winform关于nfc卡片读卡器的问题,求教

UWPCoder 2017-11-01 01:39:43
现有一套校园水卡充值程序的源码,是很早之前的老师做的,现在已经无法联系到他本人了。
学校学习.net的老师和学生太少。。
本人实力软粉,大二狗
对c#有一定的基础,于是学校创新中心的同学联系到我,说有几个问题bug需要解决。。
进过自己的摸索,虽然好多代码看不懂,但是已经解决了一大部分问题
但是!!!!
最重要的一个问题:
目前,旧读卡机器已经买不到了···当用这一套软件提供给其它学校使用时,必须买新的读卡机器来使用
电子专业的同学给我说:新机器采用新数据0x01对应旧机器数据0x31;0x02---0x32;0x03---0x33依次类推。

but本人实力实在不足,对这些硬件开发什么知之甚少。
好半天才找到一个截取到数据的地方,断点卡住,获取到旧机器的截取数据,已经被翻译成10进制了····
 private void serialPort_card_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
tmpCardNu = sp.ReadExisting();
if (xtraTabControl_main.SelectedTabPageIndex != 1)
{
sp.ReadExisting(); //读取卡号内容 让其清空;
return;
}
tmpCardNu = sp.ReadExisting();//这里可以截取到程序获取的卡号信息(已经转成10进制)
lab_info.Text = "请在读卡器上刷卡!"; //初始化会员登录时的提示信息
searchUser(tmpCardNu);
}

找不到十六进制的地方,很无奈
而且新机器插上去断点调试没用,代码不经过····
很纠结~~
不知道csdn是否有大佬曾经做过这些类似的开发?
源码放出来,大家帮我看下咯
https://pan.baidu.com/s/1qYdrWU4
谢谢各位大佬
...全文
569 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
凤凰居士 2017-11-02
  • 打赏
  • 举报
回复
下一个串口调试的软件, 按照通信协议跑一遍就都清楚了
njit_77 2017-11-02
  • 打赏
  • 举报
回复
引用 12 楼 fallinnet4486 的回复:
[quote=引用 10 楼 fallinnet4486 的回复:] [quote=引用 5 楼 qq_38588710 的回复:] 还有波特率、数据位等,最简单的办法,你学会用串口软件分别和上位机和读卡器连接,看看通信是否正常
大佬您好,今天已经将新机器和旧机器都调试好了,是因为serialPort的两个属性没设置好 现在有一个问题关于编码的问题: 断点调试卡到卡的数据: 卡1:"\0\0\0\a\u0005\u0001\u0001\0\u0006\u0003" 新机器 "0007511063" 老机器 卡2:"\0\0\0\t\b\b\b\0\u0004\u0005" 新机器 "0009888045" 老机器 无法找到这个编码的关系?!大佬求助 [/quote] 有没有ascii转明文的方法?[/quote]
            //string str = "\0\0\0\a\u0005\u0001\u0001\0\u0006\u0003";
            string str = "\0\0\0\t\b\b\b\0\u0004\u0005";
            char[] ch = str.ToCharArray();
            StringBuilder sb = new StringBuilder();
            foreach (var c in ch)
            {
                sb.Append(Convert.ToInt32(c));
            }
            Console.WriteLine(sb);
UWPCoder 2017-11-02
  • 打赏
  • 举报
回复
引用 10 楼 fallinnet4486 的回复:
[quote=引用 5 楼 qq_38588710 的回复:] 还有波特率、数据位等,最简单的办法,你学会用串口软件分别和上位机和读卡器连接,看看通信是否正常
大佬您好,今天已经将新机器和旧机器都调试好了,是因为serialPort的两个属性没设置好 现在有一个问题关于编码的问题: 断点调试卡到卡的数据: 卡1:"\0\0\0\a\u0005\u0001\u0001\0\u0006\u0003" 新机器 "0007511063" 老机器 卡2:"\0\0\0\t\b\b\b\0\u0004\u0005" 新机器 "0009888045" 老机器 无法找到这个编码的关系?!大佬求助 [/quote] 有没有ascii转明文的方法?
UWPCoder 2017-11-02
  • 打赏
  • 举报
回复
引用 9 楼 u014033791 的回复:
下一个串口调试的软件, 按照通信协议跑一遍就都清楚了
感谢回复 今天已经将新机器和旧机器都调试好了,是因为serialPort的两个属性没设置好 现在有一个问题关于编码的问题: 断点调试卡到卡的数据: 卡1:"\0\0\0\a\u0005\u0001\u0001\0\u0006\u0003" 新机器 "0007511063" 老机器 卡2:"\0\0\0\t\b\b\b\0\u0004\u0005" 新机器 "0009888045" 老机器 无法找到这个编码的关系?!大佬求助
UWPCoder 2017-11-02
  • 打赏
  • 举报
回复
引用 5 楼 qq_38588710 的回复:
还有波特率、数据位等,最简单的办法,你学会用串口软件分别和上位机和读卡器连接,看看通信是否正常
大佬您好,今天已经将新机器和旧机器都调试好了,是因为serialPort的两个属性没设置好 现在有一个问题关于编码的问题: 断点调试卡到卡的数据: 卡1:"\0\0\0\a\u0005\u0001\u0001\0\u0006\u0003" 新机器 "0007511063" 老机器 卡2:"\0\0\0\t\b\b\b\0\u0004\u0005" 新机器 "0009888045" 老机器 无法找到这个编码的关系?!大佬求助
UWPCoder 2017-11-01
  • 打赏
  • 举报
回复
引用 7 楼 njit_77 的回复:
惭愧,没看懂代码,也没有类似的项目经验。无法帮助到你
谢谢您的回复,点进来看已经很感谢了~
njit_77 2017-11-01
  • 打赏
  • 举报
回复
惭愧,没看懂代码,也没有类似的项目经验。无法帮助到你
UWPCoder 2017-11-01
  • 打赏
  • 举报
回复
引用 5 楼 qq_38588710 的回复:
还有波特率、数据位等,最简单的办法,你学会用串口软件分别和上位机和读卡器连接,看看通信是否正常
感谢您的耐心回复,我明天用机器调试之后再看看结果。
易2017 2017-11-01
  • 打赏
  • 举报
回复
还有波特率、数据位等,最简单的办法,你学会用串口软件分别和上位机和读卡器连接,看看通信是否正常
UWPCoder 2017-11-01
  • 打赏
  • 举报
回复
引用 3 楼 qq_38588710 的回复:
看了下代码,你老师应该是用DevExpress写的主界面,你发的那段代码是串口接收事件的处理代码,你换机器后接收不到串口事件表示你的程序与下位机并没有建立连接,可能他俩的串口通信参数不一致,你看看主form里的serialPort_card这个控件,改下串口通信参数试试。至于你说的读卡器,我觉得跟新不新机器没多大关系,你的读卡器应该是直接读卡号发送到上位机,个人判断你的卡片只是ID卡,一切操作都在后台数据库执行
感谢大佬回复,您说的串口参数是COM1,COM2这样的吗?在debug目录有一个xml文件控制参数在电脑上拔掉旧机器插上新机器,查看了串口还是先前的COM
易2017 2017-11-01
  • 打赏
  • 举报
回复
看了下代码,你老师应该是用DevExpress写的主界面,你发的那段代码是串口接收事件的处理代码,你换机器后接收不到串口事件表示你的程序与下位机并没有建立连接,可能他俩的串口通信参数不一致,你看看主form里的serialPort_card这个控件,改下串口通信参数试试。至于你说的读卡器,我觉得跟新不新机器没多大关系,你的读卡器应该是直接读卡号发送到上位机,个人判断你的卡片只是ID卡,一切操作都在后台数据库执行
易2017 2017-11-01
  • 打赏
  • 举报
回复
你用的是什么类型的卡片比如S50,是采用串口还是其他方式通信

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧