要使用vs实现串口通讯,目前有几种方法,serialPort和mscomm。
先讲mscomm
首先如果你的vs05的工具栏中没有microsoft communications control, 请右键点击工具栏选择添加 / 移除项,在COM组件中勾选microsoft communications control version 6.0 .
添加控件成功后将控件拖到winForm中,注意设置控件属性 settings : 9600 , n , 8,1(2)。这4个参数为[BaudRate]、[Parity] 、 [DataBits]、[StopBits] 即通讯格式中的波特率、校验位、数据位和停止位。
看代码:
- /// <summary>
- /// 打开com端口
- /// </summary>
- /// <param name="comm"></param>
- private void OpenComm(AxMSCommLib.AxMSComm comm){
- comm.CommPort = (short)1; //设置端口为COM1
- try
- {
- comm.PortOpen = true;
- }
- catch{
- MessageBox.Show("openport error");
- }
- }
- /// <summary>
- /// 组合字符串
- /// </summary>
- /// <returns></returns>
- private string toMarsh(){
- string ss = textBox2.Text;
- string tm = (char)20+textBox3.Text+(char)13+(char)22;
- string values = tm+ss+((char)13).ToString()+((char)1).ToString();
- return values;
- } //字符串中的char型是marsh喷墨打印机的指令代码。
- private void button1_Click(object sender, System.EventArgs e)
- {
- axMSComm1.Output = toMarsh(); //把toMarsh()方法生成的字符串发送到axmscomm的output中
- }
以上代码只是一个简单的程序。向marsh喷墨打印机发送了一个字符串用于打印。
axmscomm还可以设置其他的属性
- if (this.axMSComm1.PortOpen == true)
- this.axMSComm1.PortOpen = false;
- this.axMSComm1.CommPort = 1;//端口
- this.axMSComm1.Settings = "9600,n,8,1";//通信参数
- this.axMSComm1.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;//接收数据的类型
- this.axMSComm1.RThreshold = 1; //接收缓冲区中接收到一个字符,就产生一次OnComm事件
- //this.axMSComm1.OnComm += new EventHandler(axMSComm1_OnComm); //注册一个OnComm事件
- this.axMSComm1.SThreshold = 0;//当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件
- this.axMSComm1.RTSEnable = true;//启用请求发送
- this.axMSComm1.DTREnable = true;//接收就绪
- this.axMSComm1.InputLen = 0;//一次从接收缓冲区中读取字节数,// 使用Input時為讀取全部資料
- this.axMSComm1.NullDiscard = false;
- this.axMSComm1.PortOpen = true; //打开端口
- http://blog.csdn.net/imliujie/archive/2007/03/19/1533243.aspx
关于serialPort的使用方法可以参考
http://www.programfan.com/club/showpost.asp?id=29653
和
http://www.17xie.com/book-94536548.html
讲的很详细。