/// <summary> /// 读输入寄存器状态 /// </summary> /// <param name="reg">寄存器名称</param> /// <returns>返回输入状态 '0'或‘非0’,0xffff表示访问错误</returns> private async Task <UInt16> ReadReg(ReadableRegs reg) { UInt16 val = 0; byte[] ar = generate_read_command((UInt16)reg); await Task.Run(() => { bool wait; //串口资源互斥锁 //Console.WriteLine($"Before wait, thread id is {Thread.CurrentThread.ManagedThreadId}"); wait = _spmutex.WaitOne(50); if (!wait) { val = 0xffff; } else { //Console.WriteLine($"Fetch wait, thread id is {Thread.CurrentThread.ManagedThreadId}"); _sp.Write(ar, 0, ar.Length); val = recv_proc((UInt16)reg); _spmutex.ReleaseMutex(); } //Console.WriteLine($"after wait, thread id is {Thread.CurrentThread.ManagedThreadId}"); }).ConfigureAwait(false); return(val); }
public UInt16 ReadReg(ReadableRegs rr) { UInt16 val = 0; return(val); }