如何编写 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
(很抱歉,对于我这样的新手来说,代码一定很丑。但是,如果您能帮助我提供一些方向,我将不胜感激。谢谢。
我做了一些挖掘,发现了这个网站: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);
}
}
}
对不起,伙计,但如果您希望完全解决此问题,则需要提供更多信息,但希望这有所帮助。