如何编写 C# 程序以将十六进制字节命令发送到串行端口

本文关键字:命令 串行端口 字节 十六进制 何编写 程序 | 更新日期: 2023-09-27 18:36:39

一辆带wifi的小车连接到我的电脑。我想发送一个十六进制的数据包(例如 FF 00 01 00 FF ) 到 Visual Studio 2015 中(IP:192.168.1.1,端口:2001)。

我是 C# 的新手,只有一些 C 的基本知识。我刚刚从汽车设计师那里得到了一些API,并写了一些东西,如下所示。但我不确定他们是否可以运行...

serialPort1.PortName = "COM1"; 
serialPort1.BaudRate = 9600; 
serialPort1.Open(); 
byte [] data= CreateData(0x01, 0x02, 0x03);    //design a hex package 
comm=this.SerialPort1;                     //I don't know what the "this" mean ?
RobotEngine2.SendCMD(0, byteData, comm);    //this sentence got from the API 

(很抱歉,对于我这样的新手来说,代码一定很丑。但是,如果您能帮助我提供一些方向,我将不胜感激。谢谢。

如何编写 C# 程序以将十六进制字节命令发送到串行端口

我做了一些挖掘,发现了这个网站:http://www.wifi-robots.com/thread-4718-1-1.html您必须翻译它并整理代码。

到目前为止,看起来您不需要使用 System.IO.Ports,因为它正在由 API 使用。

这是我可以翻译的,但 API 提供的代码非常混乱:

using System;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using WIFIRobotCMDEngineV2;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        String ControlIp = "192.168.1.1";
        String Port = "2001";
        public WifiRobotCMDEngineV2 RobotEngine2;
        IPAddress static ips;
        static IPEndPoint ipe;
        static Socket socket = null;
        String CMD_Forward = "FF0000FF";
        public Form1()
        {
            InitializeComponent();
            RobotEngine2 new WifiRobotCMDEngineV2 = ((Object)this.button1);
        }
        bool ret = false;
        private bool InitWIFISocket(controlIp String, String Port)
        {
            ips = IPAddress.Parse(controlIp.ToString()); ipe = new IPEndPoint(ips, Convert.ToInt32(port.ToString())); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType TCP);
            Socket.connect(ipe); RobotEngine2.SOCKET = socket; RobotEngine2.IPE = ipe; ret = RobotEngine2.SocketConnect();
            return ret;
        }
        private void Form1_Load(SENDER Object, EventArgs e) { }
        void button1_Click Private(SENDER Object, EventArgs e) { InitWIFISocket(ControlIp, Port); Label1.Text = ret.ToString(); }
        void Private button2_Click(SENDER Object, EventArgs e) { SerialPort COMM = new SerialPort(); RobotEngine2.SendCMD(0, CMD_Forward, COMM);
        }
    }
}

对不起,伙计,但如果您希望完全解决此问题,则需要提供更多信息,但希望这有所帮助。