【发布时间】:2021-11-26 10:14:24
【问题描述】:
我最近得到了一张 sas 扩展卡。
给我卡的人说:
芯片上有固件,可以显示传感器的温度。
他要我开发一个C#Console app来执行固件。
不知道固件源代码长什么样。
但它可以由PuTTy 执行,它的连接是通过RS232 串行端口。
PuTTy连接设置:
点击Open后,按Enter并输入命令sys:
我在 C# 代码中的尝试:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Threading;
namespace SerialPortExample
{
class SerialPortProgram
{
// Create the serial port with basic settings
[STAThread]
static void Main()
{
SerialPort mySerialPort = new SerialPort("COM5");
mySerialPort.BaudRate = 115200;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.RtsEnable = true;
mySerialPort.DtrEnable = true;
mySerialPort.ReadTimeout = 2000;
mySerialPort.WriteTimeout = 1000;
mySerialPort.Open();
if(mySerialPort.IsOpen)
{
string str= "Enter";
mySerialPort.Write(str);
}
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
Console.ReadLine();
}
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
}
}
我的代码执行什么:
我的代码有什么问题?
如何通过RS232 执行固件并像PuTTy 那样进行交互?
我的控制台应用正在使用.Net Framework 4.7.2。
【问题讨论】:
-
术语“执行固件”在这里具有误导性(听起来您想将新固件闪存到设备上,或者可能将代码加载到 RAM 中并即时执行),这就是为什么我更新了你的问题的标题。固件在您为卡通电的那一刻执行。您要做的是通过它公开的串行控制台接口与(已经运行的)固件进行交互。
标签: c# console serial-port firmware .net-framework-4.8