C#使用COM端口/USB串行COM端口与xbee模块通信的程序

C#使用COM端口/USB串行COM端口与xbee模块通信的程序,c#,.net,winforms,C#,.net,Winforms,我正在开发一个c#程序,它使用usb串行COM端口来传输和接收数据。该组件是XBEE模块,我想访问它,但我编写的代码在我的计算机上没有检测到任何串行端口。任何能帮我改正错误的人 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.For

我正在开发一个c#程序,它使用usb串行COM端口来传输和接收数据。该组件是XBEE模块,我想访问它,但我编写的代码在我的计算机上没有检测到任何串行端口。任何能帮我改正错误的人

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApplication3
{
    public partial class Test : Form
    {
        private StringBuilder receivedData = new StringBuilder();

        public Test()
        {
            InitializeComponent();
        }

        private void Test_Load(object sender, EventArgs e)
        {
            Array ports = System.IO.Ports.SerialPort.GetPortNames();
            for (int x = 0; x <= ports.Length; comboBox1.Items.Add(ports.GetValue(x))) ;
            timer1.Start();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = comboBox1.Text;
            if (!serialPort1.IsOpen)
            {
                serialPort1.Open();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
        }

        private void Test_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Write(textBox2.Text + "\n\r");
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            receivedData.Append(serialPort1.ReadExisting());
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            textBox1.Text = receivedData.ToString();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用系统文本;
使用System.Windows.Forms;
使用System.IO.Ports;
命名空间Windows窗体应用程序3
{
公共部分类测试:表单
{
私有StringBuilder receivedData=new StringBuilder();
公开考试()
{
初始化组件();
}
私有无效测试加载(对象发送方、事件参数)
{
数组端口=System.IO.ports.SerialPort.GetPortNames();

对于(int x=0;x您需要在串行端口上设置正确的参数,以匹配设备的设置。是否已安装?请注意“搜索设备”对话框中的设置-假设它确实找到您的设备

对我来说,我发现我实际上只需要设置波特率:

var serialPort = new SerialPort(portName);
serialPort.BaudRate = 115200;
serialPort.Open();
// win!
你试过了吗?这对我的Xbee模块来说是开箱即用的