Tôi đang làm việc với thiết bị ngoại vi cần được truyền thông qua nối tiếp. Tôi có thể gửi các lệnh bằng HyperTerminal, nhưng bây giờ tôi cần viết các chương trình cho phép tôi thực hiện nó mà không cần HyperTerminal. Ai đó có thể chỉ cho tôi một trang web và/hoặc chỉ cho tôi một chương trình xin chào thế giới mẫu để giúp tôi bắt đầu không? Tôi đã tìm kiếm thông qua nhiều trang web cung cấp cho tôi mã VC6 không thể giải mã/cổ.Ví dụ cơ bản về giao tiếp nối tiếp với Windows XP/win32
Trả lời
Để giao tiếp với cổng nối tiếp, bạn mở tệp có một trong các tên tệp đặc biệt "COM1" đến "COM9". Đối với các cổng nối tiếp có số cao hơn, tên tệp đặc biệt bắt đầu bằng \\? \, Trong mã C/C++ phải được thoát là "\\\\? \\ COM10", v.v.
http://msdn.microsoft.com/en-us/library/ms810467.aspx có thực sự tốt hướng dẫn về cách sử dụng cổng nối tiếp. Lưu ý rằng bạn nên sử dụng các chức năng I/O của tệp Windows chẳng hạn như CreateFile()
, ReadFile()
và WriteFile()
. Tôi không chắc liệu nó có hoạt động hay không để sử dụng các hàm I/O tiêu chuẩn như fopen()
, fread()
và fwrite()
.
Microsoft cung cấp an article with sample code mô tả cách thực hiện việc này trong Win32.
Tôi tin rằng bạn cũng sẽ tìm thấy nhiều mã mẫu cho C# nếu bạn thấy VC6 quá cổ. Tôi nghĩ rằng cũng có một bó "miễn phí" nối tiếp/cổng COM wrappers nhưng tôi chỉ viết của riêng tôi khi tôi đã viết một phần điều khiển thiết bị RS232 của phần mềm.
google C# và cổng nối tiếp hoặc RS232
Tôi đã nhận những:
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
Bạn nên không có vấn đề tìm mã phù hợp với một tìm kiếm google.
Boost:asio có thể trợ giúp khi thiết bị nối tiếp được thêm gần đây.
Cảnh báo công bằng; tài liệu cổng nối tiếp là ánh sáng, có lẽ vì nó khá mới (nó đã được thêm vào trong asio 1.1.1 được bao gồm trong tăng 1,36).
Nhưng làm việc theo cách của bạn thông qua asio là, IMHO, một giải pháp tốt hơn so với sử dụng API Win32 thô. Tại sao? Nó sẽ dễ đọc và duy trì hơn (đó là một API cấp cao hơn) và nó sẽ là nền tảng chéo (trừ khi bạn cần chỉ định tên thiết bị cụ thể cho hệ điều hành).
Boost - Users và asio.user danh sách gửi thư khá tích cực và thân thiện và có thể giúp bạn nếu bạn gặp khó khăn.
Boost thực hiện một công việc khủng khiếp trong việc kiểm tra lỗi Win32 trong các chương trình đa luồng. Nó hoàn toàn bỏ qua các giá trị trả về cho 'WaitForSingleObject'. Sử dụng sự nguy hiểm của riêng bạn, nếu bạn không nhớ cố gắng để theo dõi lỗi của họ trong một chương trình luồng. – jww
Nếu sử dụng .NET 2.0, hãy xem System.IO.Ports và this article sẽ hữu ích. Nếu trực tiếp Win32, thì Adam's answer là tốt nhất.
- 1. Giao tiếp nối tiếp Java trên Windows
- 2. giao tiếp nối tiếp php trong linux
- 3. Ví dụ cơ bản về Node.js không hoạt động trên Windows 7
- 4. Giao tiếp WiFi-Trực tiếp giữa Mac/Windows và Android
- 5. Kết nối nối tiếp với PHP trên Windows
- 6. Giao tiếp cổng nối tiếp: đấu nối cổng nối tiếp vs sử dụng cổng nối tiếp DataReceived event
- 7. Giao tiếp với WCF Windows Service trong VB6?
- 8. Giao tiếp Windows MTP/WPD với thiết bị Android
- 9. Nối tiếp so với SPI
- 10. Ví dụ về giao diện C với thư viện C++?
- 11. Ví dụ về AIDL sử dụng
- 12. Nối tiếp và phiên bản
- 13. Giao tiếp giữa hai kịch bản python
- 14. JavaScript/JQuery giao tiếp với SerialPort/COM1
- 15. Ví dụ hàng đợi nối tiếp GCD đơn giản như FIFO sử dụng khối
- 16. Dịch vụ thực sự RESTful trực tiếp ví dụ
- 17. Ví dụ AJAX cơ bản với ASP.NET MVC?
- 18. Ví dụ về pysmb
- 19. Nối tiếp tăng tiếp trực tiếp vào mảng char
- 20. Giao diện Javascript với Cổng nối tiếp RS-232
- 21. Ví dụ về bản đồ hữu hạn
- 22. Ví dụ cơ bản cho PCA với matplotlib
- 23. Giao tiếp nối tiếp với Arduino UNO và Mac bằng cách sử dụng bluetooth mate
- 24. C# Nối tiếp Giao tiếp với nhiều thiết bị trên một cổng
- 25. Ví dụ về giao diện người dùng tốt để chọn nhiều bản ghi
- 26. Thế hệ nối tiếp với PHP
- 27. lệnh cho mở cổng nối tiếp trong Windows 7
- 28. Giao tiếp Bluetooth với Mono C#
- 29. API giao tiếp nối tiếp cho Java trên hệ thống 64 bit (tương tác modem)
- 30. Mã ví dụ về libssh2 đang được sử dụng để chuyển tiếp cổng
Bạn có nghĩ rằng bài viết được liên kết vẫn có liên quan không? Có cách nào tốt hơn trong những ngày này không? – baordog
@baordog bài viết được liên kết [không tốt chút nào] (http://stackoverflow.com/questions/25364525/win32-api-how-to-read-the-serial-or-exit-within-a-timeout -if-wasnt-a-data). –