用C#编写程序查找两个与设备(单片机USB转串口)连接的可用串口并正确设置好两个串口

本人C#程序中用到两个串口,两个串口均是利用单片机USB转串口,现在想编写C#程序查找到PC机上的这两个可用串口。我想的是先逐个查找到PC机上所有可用的串口,并向每个串口... 本人C#程序中用到两个串口,两个串口均是利用单片机USB转串口,现在想编写C#程序查找到PC机上的这两个可用串口。
我想的是先逐个查找到PC机上所有可用的串口,并向每个串口发送字节数组{0x05,0x05,0xff},单片机1串口接收到数据后发送字节0x01,单片机2串口接收到数据后发送字节0x02。我用了两个serialPort控件,若上位机接收到的是0x01,则让serialPort1的Portname设置为单片机1所连对应的串口名称“com..",若为0x02,则让serialPort2的Portname设置为单片机2所连对应的串口名称。以便于我接下来对两个单片机串口的继续操作。
单片机部分已完成,急需要C#部分程序配合,求哪位大神提供详细的源代码,若不方便在网上提供,可发至邮箱wszzh@mail.dlut.edu.cn,十分感谢~
这个是我编的程序,有错误但不会改正,而且串口部分不太清楚怎么用,望大神帮忙看看,应该怎么改动。不胜感激~
展开
 我来答
cjj796
2013-09-11 · TA获得超过8709个赞
知道大有可为答主
回答量:1.3万
采纳率:68%
帮助的人:3468万
展开全部
1、没有明白你的真实意图?
2、电脑的串口既然已经收到了单片机的数据,说明串口端口已经打开,物理端口也分配了;
你想怎么更改电脑串口到单片机的连接状态。

3、若上位机接收到的是0x01,则让serialPort1的Portname设置为单片机1所连对应的串口名
称“com..",若为0x02,则让serialPort2的Portname设置为单片机2所连对应的串口名称。

你这个没有看明白,你到底要改变什么
更多追问追答
追问
对啊,串口是打开了,在我的程序里也能看出来,但是两个串口不是都打开了吗,我要正确分配两个串口的。就是我先试着一个个打开串口,如果这个串口能打开,我要记录下这个串口名字,然后我会向这个串口发送{0x05,0x05,0xff},不同的单片机不同的应答就可知道哪个是想要的串口了,就是不知道怎么编写
追答
也就是,你电脑的串口很多,不知道那个串口接在了单片机的串口上,需要你发送字符串去验证?
wangpaishi
2013-09-11 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:760万
展开全部
你编的程序,有错误但不会改正?
什么错误

首先你要配置下串口的端口速率,校验位,停止位等等
如果和SerialPort默认参数一直,可以忽略
更多追问追答
追问
错误	1	无法将类型“int”隐式转换为“byte”。存在一个显式转换(是否缺少强制转换?) ;如串口读取部分ReadByte();我不知道Readbyte()可不可以这么用,之前上位机 发送了字符串,串口在接收时会不会有问题啊,听说要定义委托,开线程之类的,自己是新手,不太明白串口方面的操作。还有我的串口其他的波特率什么的全是默认的,不需要改动,主要是串口名字方面的设置比较麻烦。
追答
int 转 byte,如果你的确定你的数据只在int的最低一个字节上,可以byte a = (byte)intValue;
否则,如果int的四个字节(或八个字节在64位机器上)都是数据,就需要移位与或操作来分别截取。
平时没用过ReadByte,不过看方法名,应该是就只会返回一字节,只是用的int类型返回而也,其实仅有最低一字节有数据,高位字节都为0,据我推测
定义委托注意是跨线程,比如把串口线程把数据传给主窗口界面线程时,用得到
开线程注意是为了不阻塞主线程(窗口线程),反应够快的话,不开多线程也没关系,主线程阻塞几十毫秒而也,应该感觉,也可以添加线程,用于下发识别命令和读取反馈数据,都完成后,委托一下通知主线程。

委托可以简单说,就是把这个函数的全部或部分参数重新让另外一个线程在另外一个(或者相同)函数执行,委托就是函数指针。一般新开的线程不能(安全)调用界面控件,所以需要委托给界面主线程来执行调用设置界面控件

开新线程主要就是为了不让主线程Thread.Sleep等,卡住
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7a973ed
2013-09-11
知道答主
回答量:9
采纳率:0%
帮助的人:1.3万
展开全部
你妹你妹你妹
追问
你姐你姐你姐
追答
你妹
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式