1
我試圖做一個工作列表I²C發送工作者。C#I²C發送器線程通過佈線PIC
林saveing在ConCurrentQueue的I²C命令,並嘗試通過wiringPi Libary
進出口新的線程和隊列發送它,這就是爲什麼我無法弄清楚如何做到這一點的正確方法。
我想這一點,但它不會在所有的工作:d
將是很好,如果有人可以看看這一個告訴我什麼即時做錯了。
class worker
{
public bool enabled = false;
public struct i2c_command
{
public int chip_number;
public byte subadress;
public byte data;
}
private ConcurrentQueue<i2c_command> i2c_commandsList = new ConcurrentQueue<i2c_command>();
public void write_i2c(int cn, byte sa, byte data)
{
i2c_command i2c_c = new i2c_command();
i2c_c.chip_number = cn;
i2c_c.subadress = sa;
i2c_c.data = data;
i2c_commandsList.Enqueue(i2c_c);
}
public void i2c_worker()
{
enabled = true;
while (enabled = true)
{
i2c_command i2c_send = new i2c_command();
i2c_commandsList.TryDequeue(out i2c_send);
WiringPi.I2C.wiringPiI2CWriteReg8(i2c_send.chip_number, i2c_send.subadress, i2c_send.data);
}
}
}
這是啓動線程:
worker worker = new worker();
ThreadStart i2c_sender_ref = new ThreadStart(worker.i2c_worker);
Thread i2c_sender = new Thread(i2c_sender_ref);
i2c_sender.Start();
您應該考慮在https://raspberrypi.stackexchange.com上發佈此代碼 –
您可以在創建和啓動線程的位置顯示代碼以執行I2C寫入操作。 – PaulF
我尋找的主要功能與樹莓無關......我只是尋找ConcurrentQueue,我怎麼可以在我的例子中使用它 –