serial-port - 如何在 .NET Core 2.0 中访问 errno?

标签 serial-port .net-core

我正在使用来自 .NET Core 2.0 的 libc 调用来获得 Linux 上的串行端口功能。

我正在导入这样的 libc 函数:

[DllImport("libc")]
public static extern int read(int fd, IntPtr buf, int count);

然后它是这样调用的:
int result = Libc.read(fileDescriptor.Value, readingBuffer, READING_BUFFER_SIZE);

如果读取函数失败,结果变量将包含 -1。

如何从 C#/.NET Core 2.0 获取 errno 变量,以便从失败的读取调用中获取详细的错误代码?

最佳答案

正确的代码是这样的:

int fileDescriptor = Libc.open(deviceName, Libc.OpenFlags.O_RDWR | Libc.OpenFlags.O_NONBLOCK);
if (fileDescriptor == -1)
{
    var errno = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
    ...
}

关于serial-port - 如何在 .NET Core 2.0 中访问 errno?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829750/

相关文章:

asp.net - 如何使用 HttpClient 在 ASP.Net C# 中禁用分块传输编码

c++ - QSerialPort 5.2 中的 SerialPortError?

python - 在 python 中解析来自 WIZ110SR 的 TCP/IP 串行数据

c# - 启动有状态服务时无法加载文件或程序集 'System.ServiceModel, Version=4.0.0.0' 异常

c# - 在 Audit.Net 中有没有办法使用多个输出提供程序?

.net - 在 .Net Standard 1.6 项目中引用 .NET 4.5.2 类库

c++ - 收到 GSM 调制解调器响应太迟

Python 3 - 从整数转换为 'bytes' 然后连接它们(用于串行传输)

c - 从串行端口读取十六进制数据数组字节值

c# - 为什么部分封闭的泛型在函数中运行时有效,但在直接调用 ServiceCollection 时却无效?