串口调试助手源代码Word下载.docx
- 文档编号:18144198
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:15
- 大小:155.32KB
串口调试助手源代码Word下载.docx
《串口调试助手源代码Word下载.docx》由会员分享,可在线阅读,更多相关《串口调试助手源代码Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
}
privatevoidForm1_Load(objectsender,EventArgse){-
this.MaximizeBox=false;
//检查是否有串口
string[]str=SerialPort.GetPortNames();
if(str==null)|
MessageBox.Show(”本机没有串口!
"
"
error"
);
return;
//添加串口项目
foreach(stringportinSystem.IO.Ports.SerialPort.GetPortNames()){
cbSerial.Properties.Items.Add(port);
//串口设置默认选择项
cbSerial.Selectedlndex=0;
订阅委托
Control.CheckForlllegalCrossThreadCalls=false;
spl.DataReceived+=new
SerialDataReceivedEventHandler(sp1_DataReceived);
//
privatevoidcomboBoxEdit1_SelectedlndexChanged(objectsender,EventArgs
e)
//SerialPortsp1=newSerialPort();
if(!
sp1.lsOpen)〃串口是关闭的,设置参数,打开串口
try
//获取串口号
stringserialName=cbSerial.Selectedltem.ToString();
sp1.PortName=serialName;
//设置各参数
stringstrBaudRate=cbBaudRate.Text;
stringstrDateBits=cbDataBits.Text;
stringstrStopBits=cbStop.Text;
sp1.BaudRate=Convert.ToInt32(strBaudRate);
〃波特率
sp1.DataBits=Convert.ToInt32(strDateBits);
//数据位
switch(cbStop.Text)//停止位
case"
1"
:
sp1.StopBits=StopBits.One;
break;
1.5"
2"
sp1.StopBits=StopBits.Two;
default:
MessageBox.Show("
Error:
参数不正确!
Error"
switch(cbParity.Text)
//
校验位
无"
sp1.Parity=Parity.None;
break;
奇校验"
sp1.Parity=Parity.Odd;
偶校验"
:
spl.Parity=Parity.Even;
default:
参数不正确!
〃btnOpen.Enabled=false;
labSerial.Text="
串口号:
”+sp1.PortName;
labState.Text="
状态:
打开"
;
catch(System.Exceptionex)
"
+ex.Message,"
return;
//privatevoidCloseSerial_Click(objectsender,EventArgse)
〃{
//if(sp1.lsOpen)
//{
//sp1.Close();
//labSerial.Text="
”+sp1.PortName;
//labState.Text="
关闭"
//}
〃}
privatevoidSend_Click(objectsender,EventArgse){-
stringStrSend=memoSend.Text;
sp1.lsOpen)
MessageBox.Show(”请先打开串口!
else
字符串发送
if(rbtnSendStr.Checked)//
if(ckTimeSend.Checked
&
!
(string.lsNullOrEmpty(textTime.Text)))//判断是否定时发送数据
stringTime=textTime.Text;
tmSend.lnterval=int.Parse(Time)*1000;
//时间单位是秒,
化成毫秒单位
后的空格
//stringStrSend_2=StrSend_1.Replace(”"
//stringStrSend_3=string.Join(”"
Regex.Matches(StrSend_2,@"
..|."
).Cast<
Match>
().ToList());
string[]StrArray=StrSend_1.Split('
'
//用
空格符隔开字符串数组
varStr_Send=newList<
string>
();
//intbyteBufferLength=StrArray.Length;
数组StrArray的长度
for(inti=0;
i<
StrArray.Length;
i++)
if(StrArray[i].Trim()=="
){
//byteBufferLength--;
continue;
if(StrArray[i].Length<
3)
Str_Send.Add(StrArray[i]);
Str_Send.AddRange(Devide(StrArray[i]));
intbyteBufferLength=Str_Send.Count;
byte[]byteBuffer=newbyte[byteBufferLength];
intii=0;
//decNum=Convert.ToInt32(Str_Send[i],16);
//把字
符串转成16进制数
〃byteBuffer[ii]=Convert.ToByte(decNum);
decNum=Convert.ToInt32(Str_Send[i],16);
//把
字符串转成16进制数
byteBuffer[ii]=Convert.ToByte(decNum);
catch(System.Exceptionex)
MessageBox.Show(”输入错误!
"
提示"
ii++;
sp1.Write(byteBuffer,0,byteBuffer.Length);
//从第0个开始
写入byteBuffer,长度bytebuffer的长度。
|
@"
().ToList().ConvertAII(s=>
s.Value.ToString());
returnret;
privatevoidtmSend_Tick(objectsender,EventArgse){
if(rbtnSendStr.Checked)
sp1.Write(StrSend);
去掉前后的空格
用空格符隔
stringStrSend_1=StrSend.Trim();
开字符串数组|一
i++){
)
}-|
}|—
byte[]byteBuffer=newbyte[byteBufferLength];
intii=0;
Str_Send.Count;
{-
intdecNum=0;
try]
decNum=Convert.Tolnt32(Str_Send[i],16);
//把字符串转
成16进制数
}|i
{|
}EZ
sp1.Write(byteBuffer,0,byteBuffer.Length);
//从第0个开始写入
byteBuffer,长度bytebuffer的长度。
voidsp1_DataReceived(objectsender,SerialDataReceivedEventArgse)
byte[]byteRead=newbyte[sp1.BytesToRead];
if(rbtnRceStr.Checked){
创建
Byte[]receivedData=newByte[sp1.BytesToRead];
接收字节数组
sp1.Read(receivedData,0,receivedData.Length);
stringstrRcv=nuII;
receivedData.Length;
strRcv+=receivedData[i].ToString("
X2"
}memoRcv.Text+=strRcv;
memoRcv.SelectionStart=memoRcv.Text.Length;
memoRcv.ScrollToCaret();
privatevoidStop_Click(objectsender,EventArgse)
//退出接收数据
privatevoidTime_Press(objectsender,KeyPressEventArgse){
Char.lsLetterOrDigit(e.KeyChar))
privatevoidTextTime_KeyPress(objectsender,KeyPressEventArgse)//限制定时发送时间只能输入数字
(Char.lsNumber(e.KeyChar))&
e.KeyChar!
=(char)8)
MessageBox.Show(”请输入数字"
提示"
e.Handled=true;
privatevoidmemoSend_KeyPress(objectsender,KeyPressEventArgse)
串口
privatevoidbtnClose_Click(objectsender,EventArgse)//关闭
if(sp1.lsOpen)
sp1.Close();
}privatevoidSend16_KeyPress(objectsender,KeyPressEventArgse){
//stringSend16=memoRcv.Text;
〃byte[]buff=newbyte[Send16.Length/2];
〃intindex=0;
//for(inti=0;
Send16.Length;
i+=2)
//buff[index]=Convert.ToByte(Send16.Substring(i,2),16);
//++index;
//}
//stringresult=Encoding.Default.GetString(buff);
////MessageBox.Show(result);
//memoRcv.Text=result;
}privatevoidSendStr_KeyPress(objectsender,KeyPressEventArgse)
{_
//stringSendStr=memoRcv.Text;
//byte[]ba=System.Text.ASCIIEncoding.Default.GetBytes(SendStr);
//StringBuildersb=newStringBuilder();
//foreach(bytebinba)
//{
//sb.Append(b.ToString("
x"
));
////MessageBox.Show(sb.ToString());
//memoRcv.Text=sb.ToString();
privatevoidrbtnSend16_CheckedChanged(objectsender,EventArgse){
StateChanged_16=1;
StateChanged_Ascii=0;
if(Temp_memoSend==StrSend.Trim()&
Flag==1)
memoSend.Text="
foreach(charSinStrSend)
memoSend.Text+=((byte)S).ToString("
privatevoidrbtnSendStr_CheckedChanged(objectsender,EventArgse){
if(StateChanged_16==1)
Flag=1;
StateChanged_16=0;
StateChanged_Ascii=1;
去掉前后的空格用空格符隔
Temp=memoSend.Text;
开字符串数组
if(StrArray.Length==0)
{break;
}else
}-
把字符
for(intj=0;
j<
Str_Send.Count;
j++)
try{
decNum=Convert.ToInt32(Str_Send[j],16);
//串转成16进制数
if(decNum>
=48&
decNum<
=57||decNum>
=65&
decNum<
=90||decNum>
=97&
=122)//除了数字和字母,其他都转成问号
byteBuffer[ii]=Convert.ToByte(63);
{I
rbtnSendStr.Checked=false;
rbtnSend16.Checked=true;
memoSend.Text=StrSend;
}ii++;
foreach(bytebinbyteBuffer)
memoSend.Text+=(char)b;
Temp_memoSend=memoSend.Text;
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串口 调试 助手 源代码