项目需要写个扫描的程序,原来是用VB做的,用的也是很好!不知道是不是客户心血来潮,现在竟然要加到.NET平台下,用C#来实现。
早就听说了C#对串口的支持不是很好,一用还真是的 。
找到了MSComm.ocx 之后把他COPY到SYSTEM32下面,写了个注册表文件,把这个给注册一下
REGEDIT
HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established copyrights.
// The MsComm32 Control License follows:
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
以.reg的文件名保存,双击打开即可注册。
然后在窗体的form_load事件中加入如下代码:
然后再在axMSComm2_OnComm 事件中加入如下代码:
按道理来说这个时候应该可以进行扫描,至于其他的业务处理,就需要另外加了。
但是,我觉得C#的支持不好就体现在这里。大多数的情况下扫描的很好,但是有的时候老是连不上,老是catch,真搞不明白!
早就听说了C#对串口的支持不是很好,一用还真是的 。
找到了MSComm.ocx 之后把他COPY到SYSTEM32下面,写了个注册表文件,把这个给注册一下
REGEDIT
HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established copyrights.
// The MsComm32 Control License follows:
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
以.reg的文件名保存,双击打开即可注册。
然后在窗体的form_load事件中加入如下代码:
1 try
2 {
3 axMSComm2.CommPort=1;
4 this.axMSComm2.PortOpen=true;
5 }
6 catch
7 {
8 cm.Msg("串口通讯失败!");
9 }
10 finally
11 {
12 }
值得注意的是:加入两个MSComm控件,你会发现这里MSComm的默认名字是axMSComm,有点奇怪吧!
2 {
3 axMSComm2.CommPort=1;
4 this.axMSComm2.PortOpen=true;
5 }
6 catch
7 {
8 cm.Msg("串口通讯失败!");
9 }
10 finally
11 {
12 }
然后再在axMSComm2_OnComm 事件中加入如下代码:
if(axMSComm2.CommEvent==2)
{
this.ProEAN.Text=ProEAN.Text+axMSComm2.Input;
}
这里是用2口扫描,这个时候一定要注意把axMSComm2
的RTSEnable这个属性设置为:1。{
this.ProEAN.Text=ProEAN.Text+axMSComm2.Input;
}
按道理来说这个时候应该可以进行扫描,至于其他的业务处理,就需要另外加了。
但是,我觉得C#的支持不好就体现在这里。大多数的情况下扫描的很好,但是有的时候老是连不上,老是catch,真搞不明白!