public void btnOpen_Click(object sender, RoutedEventArgs e)
         {
             port1 = new SerialPort();
             port1.PortName="COM1";
             port1.BaudRate = 9600;//波特率
            port1.Parity  = Parity.None;//无奇偶校验位
            port1.StopBits = StopBits.Two;//两个停止位
             port1.Handshake = Handshake.RequestToSend;//控制协议
           port1.ReceivedBytesThreshold = 4;//设置 DataReceived 事件发生前内部输入缓冲区中的字节数
            port1.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);//DataReceived事件委托
        }
这里打开的串口是COM1,能不能是这样我这个程序来和单片机通讯。我不知道用的是哪个串口,也能打开我想要打开的串口。求大神指教

解决方案 »

  1.   

    这……你不光需要看是哪个串口,还需要知道对应的波特率等等的参数,可以有个默认值,需要提供一个配置界面来配置默认参数,也可以写入到配置文件中,总之你设置的这些参数都是要可变的才可以,写死就算你遍历了所有串口又有什么用,每个都去打开一下看超时不超时吗?不现实
      

  2.   

    况且,波特率不对你接受的数据也是乱码,还是搞成可配置的项吧。
      

  3.   

    这个问题可以通过串口调试助手解决,单片机上要设置跟你程序中相同的波特率以及停止位和奇偶校验。使用串口调试助手可以打开很多个串口,用电脑连接你要调试的单片机设备,然后打开串口调试助手获取传过来的数据,在调试助手中查看是哪个串口获得的数据,然后再程序里面写死就可以了。 串口调试助手网上有很多,随便下载一个就可以了。