Ola*_*avT 5 c# serial-port .net-core
我使用 .NET Core 2.0 中的 libc 调用来访问 Linux 上的串行端口功能。
我正在导入 libc 函数,如下所示:
[DllImport("libc")]
public static extern int read(int fd, IntPtr buf, int count);
Run Code Online (Sandbox Code Playgroud)
然后它的调用方式如下:
int result = Libc.read(fileDescriptor.Value, readingBuffer, READING_BUFFER_SIZE);
Run Code Online (Sandbox Code Playgroud)
如果读取函数失败,结果变量将包含 -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();
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
707 次 |
最近记录: |