【发布时间】:2012-08-11 03:46:32
【问题描述】:
我已设法在 Visual C# express 中识别驱动器和串行端口,但我仍然无法访问特定设备(RepRap 打印机)。我想向它发送一个字符串数组,但首先我需要找到它,我该怎么做?我正在使用 Windows 7。
获取驱动器:
using System.Linq;
using System.IO;
using System;
class Program
{
static void Main(string[] args)
{
var drives = DriveInfo.GetDrives();
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach(DriveInfo dv in drives)
{
Console.WriteLine("drive Name:{0}", dv.Name);
}
Console.ReadLine();
}
}
获取串口:
using System;
using System.IO.Ports;
namespace SerialPortExample
{
class SerialPortExample
{
public static void Main()
{
string[] ports = SerialPort.GetPortNames();
Console.WriteLine("The following serial ports were found:");
foreach (string port in ports)
{
Console.WriteLine(port);
}
Console.ReadLine();
}
}
}
非常感谢!
【问题讨论】:
-
设备是否支持通过串口访问固件?您的代码甚至似乎都没有尝试这样做。
-
如果您尝试访问打印机,为什么要“扫描”“驱动器”?您似乎正在编写用户程序。 (未提及的)操作系统将只允许/公开设备驱动程序支持的设备功能,即读/写加上 ioctl() 操作。应用访问特定设备的典型方法是通过用户配置。 pgm 被告知在设置对话框中使用特定端口上的一种设备。这解决了安装 2 个设备的问题,以及应用程序“找到”“错误”单元的问题。如果你坚持要找串口设备,试试看/proc/tty/serial
-
谢谢,现在听起来好多了:) 在我所在的地区,人们倾向于说与设备通信,或与固件通信,或与设备的操作系统等。所以可以如果您详细说明一下,请使用该词。只是“访问固件”这句话具有误导性。就这样!就像“从固件下载传感器读数”听起来比“从固件下载数据”更清晰。后者只是立即让我觉得有人想要侵入设备的代码/内存,而不是你想要真正优雅地交流。 :)
-
@quetzalcoatl - 该设备是主机 PC 的外围设备。因此,主机 PC 下载到设备并从设备上传。您从服务器“下载”,因为您的 PC 是服务器的客户端。如果您不了解层次结构,请改用“转移”。 “从固件下载 ...” 听起来像是最终用户滥用行话,实际上就是这样。您正在访问一个设备,而不是该设备的一部分。
-
我不认为与我通信的设备从属于 PC。这是一个可能是独立机器的对等设备,或者它可能需要我的一些指令。我们通过这个来交谈的事实总线或该协议不会使设备成为从设备。这是定义谁是主设备和谁是从设备的使用架构,假设根本存在一些层次结构。直到定义了一些用例的逻辑层次结构,在不确定的情况,download="数据传入ME"和upload="数据从ME传出",因为我是传输的管理者。en.wikipedia.org/wiki/Upload
标签: device serial-port c#