要使用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
講的很詳細。