【问题标题】:How to access a device and send data to it?如何访问设备并向其发送数据?
【发布时间】: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#


【解决方案1】:

我鼓励您首先检查这两个问题和答案:

Get the device name connected to the serial port
这一篇简短地解释了为什么它很难,但提供了一些关于如何询问 Windows 它对设备了解多少的线索

Getting Serial Port Information
这是一堆进一步的代码示例。

通常,您可能希望通过系统分配给它的名称来查找设备 - 您可能知道名称及其类似“reprap#1”之类的东西。我只是猜测。要求扫描所有 COM 设备名称并将其显示给用户可能是一个好主意,以便他可以选择正确的。..

如果您想自动检测,您可以尝试通过一些较低级别的详细信息(如驱动程序名称等)来检测它们,但通常最好将其留给用户。

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多