1
作業リストでI²C送信ワーカーを実行しようとしています。私はそれを正しい方法を行う方法を見つけ出す傾ける理由ImはConCurrentQueueでI²Cコマンドをsaveingとスレッディングとキューに新しいwiringPi LibaryC#I²C送信者スレッド経由配線ピン
イム経由で送信しよう
は、thatsの。
、私はこれを試してみましたが、それは文句を言わないで、すべての作業:誰かがこれを見ては間違って何イムを教えていできれば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を探していて、私の例でそれをどう使うことができますか? –