




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C#基于WinForm實(shí)現(xiàn)串口通訊程序運(yùn)行如下:
首先,檢查計(jì)算機(jī)的串口,并獲取所有串口信息。
privatevoidCheckPort()//檢查串口是否可用
{
myLog(2,"檢測(cè)串口開(kāi)始!");
//log記錄函數(shù)
comboBox1.Items.Clear();//清除控件中的當(dāng)前值
string[]a=SerialPort.GetPortNames();
if(a.Length!=0)
{
for(inti=0;ia.Length;i++)
{
comboBox1.Items.Add(a[i]);
}
comboBox1.SelectedIndex=0;//
myLog(2,"檢測(cè)串口完成");
}
else
{
myLog(2,"無(wú)可用串口...",true);
}
}
privatevoidSetPort()//設(shè)置串口
{
try
{
serialPort1.PortName=comboBox1.Text.Trim();//串口名給了串口類
//波特率
虛擬串口的波特率好像不能修改,但得將其賦為空,不然報(bào)錯(cuò)
//serialPort1.BaudRate=Convert.ToInt32(comboBox2.Text.ToString().Trim());
//9600;
serialPort1.BaudRate=Convert.ToInt32("".Trim());
//奇偶效驗(yàn)
if(comboBox5.Text.Trim()=="奇校驗(yàn)")
{
serialPort1.Parity=Parity.Odd;//將奇校驗(yàn)位給了sp的協(xié)議
}
elseif(comboBox5.Text.Trim()=="偶校驗(yàn)")
{
serialPort1.Parity=Parity.Even;
}
else
{
serialPort1.Parity=Parity.None;
}
//停止位
if(comboBox4.Text.Trim()=="1.5")
{
serialPort1.StopBits=StopBits.OnePointFive;//設(shè)置停止位有幾位
}
elseif(comboBox4.Text.Trim()=="2")
{
serialPort1.StopBits=StopBits.Two;
}
else
{
serialPort1.StopBits=StopBits.One;
}
serialPort1.DataBits=Convert.ToInt16(comboBox3.Text.ToString().Trim());//數(shù)據(jù)位
serialPort1.Encoding=Encoding.UTF8;//串口通信的編碼格式
serialPort1.Open();
}
catch{}
}
///summary
///Log記錄
////summary
///paramname="aa"aa=
0為發(fā)送
1為接受2為日常記錄/param
///paramname="mystr"記錄內(nèi)容/param
///paramname="IsHint"true顯示彈框,false不顯示彈框默認(rèn)false/param
privatevoidmyLog(intaa,stringmystr,boolIsHint=false)
{
//log存放路徑
stringmyypath=myPath+DateTime.Now.ToString("yyyyMMdd")+".txt";
StreamWritersw=newStreamWriter(myypath,true);
stringtempSendstr;
if(aa==0)
{
tempSendstr=DateTime.Now.ToString("HH:mm:ss.fff")+"
"+serialPort1.PortName+"發(fā)送---
"+mystr;
}
elseif(aa==1)
{
tempSendstr=DateTime.Now.ToString("HH:mm:ss.fff")+"
"+serialPort1.PortName+"接收---
"+mystr;
}
else
{
tempSendstr=DateTime.Now.ToString("HH:mm:ss.fff")+"
"+mystr;
}
sw.WriteLine(tempSendstr);
sw.Close();
//彈框提示
if(IsHint)
{
MessageBox.Show(mystr,"提示");
}
if(listBox1.Items.Count=10)listBox1.Items.Clear();
listBox1.Items.Add(tempSendstr);
}
大部分的筆記本都不帶串口的,我們可以在網(wǎng)上下載ConfigureVirtualSerialPortDriver,給自己的筆記本添加幾對(duì)虛擬串口(虛擬串口都是成對(duì)且一一匹配的),再用串口調(diào)試助手就可以進(jìn)行調(diào)試了。
數(shù)據(jù)的發(fā)送:
//發(fā)送
privatevoidbutton3_Click(objectsender,EventArgse)
{
if(!serialPort1.IsOpen)
{
MessageBox.Show("串口未打開(kāi),請(qǐng)檢查!");
return;
}
stringmystr1=textBox1.Text;
byte[]a=Encoding.UTF8.GetBytes(mystr1);
stringmystr2=Encoding.UTF8.GetString(a);
serialPort1.Write(mystr2);//將數(shù)據(jù)寫(xiě)入串行端口輸出緩沖區(qū)
myLog(0,mystr2);
}
數(shù)據(jù)接收:
//串口接收數(shù)據(jù)
privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEventArgse)
{
Thread.Sleep(100);
this.Invoke((EventHandler)(delegate//異步委托一個(gè)線程
{
if(serialPort1.BytesToRead0)
{
byte[]a=newbyte[serialPort1.BytesToRead];//讀出緩沖區(qū)串口通信的字節(jié)
intreadbytes=0;
while(serialPort1.Read(a,readbytes,serialPort1.BytesToRead-readbytes)=0);
stringstr=UTF8Encoding.UTF8.GetString(a);
textBox2.Text=str+"\r\n";
myLog(1,str);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CECS 10152-2021高分子聚合礦物質(zhì)防滲材料
- T/CECS 10001-2019用于混凝土中的防裂抗?jié)B復(fù)合材料
- T/CCSAS 038-2023包裝單元操作機(jī)械化、自動(dòng)化設(shè)計(jì)方案指南
- T/CCS 014-2023煤矸石固廢自動(dòng)化充填開(kāi)采技術(shù)要求
- T/CCMA 0137-2022防撞緩沖車(chē)
- T/CCMA 0135-2022智能控制的人貨兩用施工升降機(jī)技術(shù)規(guī)程
- T/CCMA 0098-2020移動(dòng)式升降工作平臺(tái)操作工
- T/CCASC 4001-2021氯堿工業(yè)技術(shù)經(jīng)濟(jì)核算工作導(dǎo)則
- T/CCAS 002-2018水泥企業(yè)社會(huì)責(zé)任報(bào)告編寫(xiě)指南
- T/CATCM 021-2023鹿角膠質(zhì)量規(guī)范
- 退教協(xié)工作總結(jié)范文(通用6篇)
- TSG-R0005-2022《移動(dòng)式壓力容器安全技術(shù)監(jiān)察規(guī)程》(2022版)
- 《慧典電子病歷系統(tǒng)》操作手冊(cè)
- 配電室維保方案資料
- 下消化道出血診治PPT
- 醫(yī)院病房裝修改造工程施工方案
- 非相干散射雷達(dá)調(diào)研報(bào)告
- 設(shè)計(jì)概論 設(shè)計(jì)批評(píng)
- 醫(yī)院崗位設(shè)置與人員編制標(biāo)準(zhǔn)
- 晚設(shè)計(jì)我們的校園——校園環(huán)境藝術(shù)設(shè)計(jì)
- 電機(jī)電磁線圈設(shè)計(jì)程序..
評(píng)論
0/150
提交評(píng)論