C++'da 16-bit derleyici kullanarak seri bağlantı noktası RS-232 bağlantısı yaptım (Turbo C++ IDE kullanıyordum). Bağlantı noktasından değerleri okumak için gereken tüm işlevleri içeren bios.h
başlık dosyasını içerir. Şimdi C++ 32-bit Mingw derleyicisini kullanarak seri porttan değer okumak istiyorum. IDE olarak Dev CPP kullanıyorum. Burada bios.h
bulunamadı. Mingw'de bu amaç için mevcut herhangi bir özel başlık dosyası var mı? Şimdi 32-bit derleyiciyi kullanıyorum çünkü benim üniversite projemde Turbo C'de desteklenmediğini düşündüğüm Exception işlemlerini kullanmam gerekiyor. Lütfen bana yardımcı olun.C++ 'da Seri Bağlantı Noktası (RS -232) Bağlantısı
cevap
burada bir göz atın:
- RS-232 for Linux and Windows1)
- Windows Serial Port Programming2)
- Using the Serial Ports in Visual C++3)
- Serial Communication in Windows
1)Bunu Windows ile kullanabilirsiniz (dahil. Linux yanı sıra MinGW). Alternatif olarak sadece kodu örnek olarak kullanabilirsiniz.
2) Kelimenin tam anlamıyla
İşte MinGW bu kullanabilirsinizpencereler
3) seri bağlantı noktalarını nasıl kullanılacağınıAdım adım öğretici gerçekten, çok çok var (herhangi bir hata işleme veya ayarlar olmadan) basit kod:
#include <windows.h>
/* ... */
// Open serial port
HANDLE serialHandle;
serialHandle = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
// Do some basic settings
DCB serialParams = { 0 };
serialParams.DCBlength = sizeof(serialParams);
GetCommState(serialHandle, &serialParams);
serialParams.BaudRate = baudrate;
serialParams.ByteSize = byteSize;
serialParams.StopBits = stopBits;
serialParams.Parity = parity;
SetCommState(serialHandle, &serialParams);
// Set timeouts
COMMTIMEOUTS timeout = { 0 };
timeout.ReadIntervalTimeout = 50;
timeout.ReadTotalTimeoutConstant = 50;
timeout.ReadTotalTimeoutMultiplier = 50;
timeout.WriteTotalTimeoutConstant = 50;
timeout.WriteTotalTimeoutMultiplier = 10;
SetCommTimeouts(serialHandle, &timeout);
Artık yazma/okuma baytları için WriteFile()
/ReadFile()
'u kullanabilirsiniz. Bağlantınızı kapatmak unutmayın :
CloseHandle(serialHandle);
Sanırım "GetCommState" yerine ikinci kez "SetCommState" çağırıyor olmalısınız? – Ben
Haklısınız, bu bir hatadır - ipucu için teşekkürler, düzeltdim. – ollo
Linux'ta da kullanabileceğinizi söylüyorsunuz, fakat siz '
- 1. Adobe-Air'da seri bağlantı noktası erişimi
- 2. "Bağlantı noktası" için geçersiz çıkış veya giriş bağlantı noktası bağlantısı "
- 3. Seri Bağlantı Noktası Nasıl Okunur ve Yazılır
- 4. C++ ve arduino seri bağlantısı
- 5. Compact Framework Seri bağlantı noktası Açık işlev
- 6. Web ortamında seri bağlantı noktası kullanın
- 7. C++ 'da bir COM bağlantı noktası açın, bu sayı 9
- 8. Simulink'te birçok öğenin seri bağlantısı
- 9. Raspberry Pi, Arduino, Node.js ve seri bağlantı noktası
- 10. Seri bağlantı noktasını benzet
- 11. Qt Seri Bağlantı Noktası - Sürekli olarak veri okumak
- 12. python seri olarak yazma dizisi Raspberrypi'deki bağlantı noktası
- 13. Raspberry Pi + MonoDevelop'taki seri bağlantı noktası verileri nasıl okunur?
- 14. C# Bir bağlantı noktasında birden çok aygıtla Seri İletişim
- 15. TCP bağlantı noktası erişimi ve C++
- 16. C dilinde seri programlama, DOS
- 17. Python bağlantı noktası bağlama
- 18. C#: Bir seri bağlantı noktası aygıtı için ayarlanabilir baud hızı nasıl belirlenir?
- 19. Seri Bağlantı Noktasına USB
- 20. change pgsql bağlantı noktası
- 21. PDO Bağlantı Noktası Ofset
- 22. bağlantı noktası bulunamadı
- 23. TCP için İzin Verilen Bağlantı Noktası Aralığı
- 24. C# 'da bir bağlantı dizesinde iki veritabanına nasıl bağlanır?
- 25. C++ linux tüm seri portları algılar
- 26. JAX-RS bağlantı/eleman genişletme uygulaması?
- 27. Yüzen eylem düğmesi bağlantı noktası
- 28. Android Studio Modbus rs485 seri bağlantısı MacosX
- 29. .NET 2.0'da JSON'a seri hale getirme
- 30. Android Bluetooth COM bağlantı noktası
Ben bunu olduğu gibi doğrudan COM ile kullanıcı modundan çalışmaya kullanılamayacaktır düşünüyorum. Eski bağlantıyı kullanmak istiyorsanız, 16 bit derleyiciyi kullanmaya devam etmeli ve uygulamanızı bazı dos emülatörlerde, yani, dosbox'ta çalıştırmalısınız. Fiziksel COM'u bios.h arayüzlerine iletir. –
zabulus
Ne demek istediğini tam olarak anlayamadım? DosBox'ta Mingw'de geliştirilen programımın .exe dosyasını çalıştırabilir miyim? Evet ise nasıl? – iammurtaza
Sorunuzda hakkında bilgi verdiniz. COM bağlantı noktası ile iletişim kurmak için bu dosya dos ortamında kullanılmış gibi görünüyor. Modern pencerelerde bu şekilde iletişim kurma olanağı mevcut değil. Derleme exe'nin windows ortamında çalıştırılmasını istediğinizi varsayalım. Bu durumda başka bir API kullanmalısınız. "CreateFile COM1" –
zabulus