2008-09-17 20 views
1

Linux dağıtıcısında ustabaşı üzerinde RxTx kütüphanesini kullanıyorum. RxTx lib, seriden nasıl çalıştığından çok farklı (kötü bir şekilde) davranıyor gibi görünüyor.RxTx SerialEvent.DATA_AVAILABLE olayını hangi iş parçacığı ile işlem yapmalıyım?

Uygulamamın birkaç iş parçacığı var ve en büyük sorunlardan biri, hiçbir yerde, akışımda bir veya iki ek bayta ulaştığımı gösteriyor. Nereden geldiklerini veya neden olduğunu anlayamıyorum. Başka bir iş parçacığı kullanarak RxTx akışına yazdığımda bu sorun çok daha sık görünüyor.

Şu anki RxTx iş parçacığı üzerinde okumalı mıyım yoksa DATA_AVAILABLE olayını aldığımda başka bir iş parçacığı üzerinde okumalı mıyım?

Birisi ya da diğeri için iyi ya da kötü nedenlere sahip olabileceğini umuyorum.

+0

Güncelleştirme: Ek baytların kaynağını keşfettim! USB cihazından gelmişler ve herhangi bir şekilde RxTx ile ilgili değiller! Ancak (RxTx veya diğer) okumak için en iyi iş parçacığı ile ilgili soru hala yanıtsız kalır! – Jeach

+0

Kendi sorunuza bir cevap oluşturmalı ve cevapla bir yorum eklemek yerine bitirmelisiniz. siteyi biraz daha temiz tutar. – Jrud

cevap

1

Bu sadece bir tahmin, ancak size bir ipucu verebilir.

Gönderme ve alma işleminin bir arabelleğe sahip olması veya gönderirken, baytların bir şekilde girişte de alınması mümkündür - bunu bazı gömülü sistemlerde görmüştüm.

Yapmanız gereken en iyi şeyin, başlangıçta her ikisinin de aynı iş parçacığıyla gönderilmesini ve almayı sürdürdüğünü görebilirsiniz. Başka bir şey, bir okuma denemeden önce çıktının süzülmesini sağlamak olabilir. Umarım bu bir ipucu verebilir.

İlgili konular