Bu sorun hakkında çok iyi bir makale var here. En donanım içinde gerçekleştirilir, ancak özellikle
işaret ve boşluk parite
, POSIX standardında tanımlanan değildir. Unix/Linux termios kütüphanesinin manpage'i, bu iki parite modu hakkında tek bir kelime kaybetmez. (PARMRK MARK parite ile ilgisi yoktur unutmayın.)
Bu bence neden, bu seçenekler Boost.Asio uygulanmadı olduğunu.
birkaç çözüm önerilen vardır: Örneğin:
modu 8M1 (8 veri biti, Mark parite, 1 durdurma biti) 8N2 ile taklit edilebilir. Bir eşlik biti ve bir durdurma biti göndermek yerine, iki durma biti iletilir. Durma bitleri her zaman 1 (işaret biti), olduğundan, iki mod eşdeğerdir.
Bunlar sizin gereksinimlerinizle eşleşmiyorsa, seri bağlantı noktanızın yerel temsilini artırmaya devam edebilirsiniz. Dokümanlar :
switch (value_)
{
case none:
storage.c_iflag |= IGNPAR;
storage.c_cflag &= ~(PARENB | PARODD);
break;
case even:
storage.c_iflag &= ~(IGNPAR | PARMRK);
storage.c_iflag |= INPCK;
storage.c_cflag |= PARENB;
storage.c_cflag &= ~PARODD;
break;
case odd:
storage.c_iflag &= ~(IGNPAR | PARMRK);
storage.c_iflag |= INPCK;
storage.c_cflag |= (PARENB | PARODD);
break;
default:
break;
}
Bence:
basic_serial_port::native_handle
Get the native serial port representation.
native_handle_type native_handle();
This function may be used to obtain the underlying representation of the serial port. This is intended to allow access to native serial port functionality that is not otherwise provided.
kullanım bir fikir edinmek için linux üzerinde parite ile ilgisi kod
boost_1_45_0/boost/asio/serial_port_base.hpp
de ve özellikle bir göz bayrağı ayarlamak için native_handle
'u kullanmak istediğinizde:
(Neyse
here göre) 210
Ayrıca vermek örnekler ben çalışmak için ve CMSPAR sistemimde tanımlanmamış ve çalışmıyor alamadım termios yapısı vardır wrong sequence of libserial received data
görüyoruz. cevabınız için teşekkürler, şimdi java'da yapmam gerektiğini biliyorum :( – Skeith
@Skeith - Bağlantıya bir göz atın - ekstra bir durdurma biti kullanarak Mark ve Space'e hem öykünebilirsiniz (Mark daha kolay) - Bu doğrudan Desteklenmeyen CMSPAR'lerle oynamaya gerek kalmadan Boost.Asio tarafından desteklenmektedir.BTW - Çekirdeğiniz desteklemiyorsa, geçiş dilleri yardımcı olacağından emin değilim. – Tom
java'da out cihazıyla iletişim kurabilen fakat selefimiz tarafından inşa edilmiş bir programımız var. Mümkünse seri kodun C++ 'dan yeniden yazılması için büyük bir iş olacağından mümkünse seri kodu kesmeyi denemek istemedim, çünkü eksik olan tek şey linux için seri kod ama ben başka seçeneğim yok şimdi. – Skeith