Aşağıdaki kod, iletişim gerçek bir seri bağlantı noktasından geçerken beklendiği gibi çalışır. Proses, ReadFile üzerindeki blokları engeller ve işleme başlamadan önce seri tamponun doldurulmasını bekler. Ancak, bir seri bağlantı noktasını öykünen bir USB aygıtı bağladığımda, Tampon'dan hiçbir veri geçmediğinde bile ReadFile engellenmeyecektir.Seri Haberleşmeler bir öykünülmüş bağlantı noktasında engellenmiyor
aşağıdaki çıktıyı almak USB bağlantılı cihazdan her saniye ...
RVal = 1 ch = -52 bytesRead = 0
Yani hiçbir hata döndürülür ve okuma bayt I dek hep 0 olan USB bağlantı noktasından bayt gönder.DWORD rVal;
HANDLE handle;
BOOL isGood;
char Ch; //Temporary character used for reading
DWORD bytesRead;
handle = CreateFile(L "\\\\.\\COM4", //port name
GENERIC_READ | GENERIC_WRITE, //Read/Write
0, // No Sharing
NULL, // No Security
OPEN_EXISTING, // Open existing port only
0, // Non Overlapped I/O
NULL); // Null for Comm Devices
if (handle == INVALID_HANDLE_VALUE)
{
return INVALID_HANDLE_VALUE;
}
isGood = SetCommMask(handle, EV_RXCHAR);
if (isGood == false)
{
return USV_ERR_READER_COM;
}
rVal = ReadFile(handle, //Handle of the Serial port
&ch, //Temporary character
sizeof(ch),//Size of TempChar
&bytesRead, //Number of bytes read
NULL);
...
Bu sorunu hiç veya benim müşterilerim kutularında görmedim. –
Bağlı 4-5 crossover (CTS-RTS) var mı? Sadece 2, 3 ve 7'ye sahipseniz, xon/xoff protokolünü kullanmanız gerekecektir. – cup
Yukarıdaki kodla bir RS232 seri portuna bağlı bir cihaz kullanmamda herhangi bir sorun yaşamadım. ReadFile, bayt bağlantı noktası geçene kadar beklendiği gibi engeller. Bir USB aygıtı bağladığımda, hiçbir bayt öykünülmüş bağlantı noktasından geçiyor olsa da, ReadFile engellenmez. Şaşkınım. –