2012-04-03 36 views
5

Tôi chỉ bắt đầu làm việc trong C# và tôi hiện đang sử dụng RS-485 để giao tiếp với một số thiết bị khác nhưng dường như không thực sự có được các thiết bị khác để phản hồi . Tôi đã tự hỏi nếu có bất kỳ cách nào để ghi vào một thiết bị cụ thể bằng cách sử dụng giao tiếp nối tiếp vì nó được kết nối thông qua cổng COM 4. Tôi đã biết serial.Write(); nhưng theo như tôi biết, nó không cung cấp cho bạn tùy chọn để chọn địa chỉ bạn muốn gửi đến. Có ai có thể biết câu trả lời cho câu hỏi này không?C# Nối tiếp Giao tiếp với nhiều thiết bị trên một cổng

Trân trọng Cvr

Cảm ơn bạn đã trả lời. Họ đã giúp rất nhiều :)

Trả lời

8

Kristof là đúng, nhưng để xây dựng thêm một chút:

Khi giao tiếp với RS232 bạn chỉ cần có hai thiết bị đầu cuối, máy tính của bạn và thiết bị bên ngoài. Bạn giao tiếp với thiết bị bằng cách gửi lệnh hoặc thậm chí có thể gửi chúng bất kể. Nó có thể là văn bản ASCII đơn giản hoặc mã nhị phân/hex. Cách nó giao tiếp giữa hai thiết bị được gọi là giao thức - và ứng dụng của bạn phải thực hiện giao thức này để có thể 'nói chuyện' với thiết bị.

RS485 khác với RS232, trong đó bạn có thể tạo chuỗi nhiều thiết bị trên cùng một cổng nối tiếp được kết nối với PC của bạn. Tùy thuộc vào thiết bị của bạn, nó sẽ có giao thức riêng của nó mà nó hiểu được bạn sẽ cần phải học và trở nên quen thuộc. Điều này sẽ được cung cấp cùng với các thiết bị bạn đang kết nối.

Thông thường, các giao thức sẽ có (ít nhất) các thông tin sau:

  • Device Địa chỉ - nó sử dụng này để phân biệt thiết bị nào bạn muốn nói chuyện, thường có thể được thiết lập bởi công tắc bật tắt phần cứng hoặc như
  • lệnh - lệnh thực tế mà bạn muốn gửi tới các đơn vị
  • dữ liệu - Mọi dữ liệu thêm bạn có thể cần phải vượt qua cho các lệnh cụ thể

vì vậy, một kỳ thi lệnh ple bạn có thể gửi cho đơn vị sẽ trông giống như (lưu ý đây chỉ là một ví dụ):

$01FF9A 

đâu:

01 là module hoặc các thiết bị địa chỉ duy nhất FF là loại lệnh 9A là dữ liệu

Vì vậy, ở đây, mô-đun có địa chỉ thiết bị 01 sẽ đọc lệnh và suy ra 'này bạn đang nói chuyện với tôi' và sau đó xử lý thông tin lệnh. Tất cả các thiết bị khác cũng sẽ nhận được dữ liệu, nhưng sẽ nhận ra rằng nó không phải là mệnh cho chính nó.

Thông thường thiết bị RS485 giao tiếp bằng dữ liệu Hex, vì vậy ứng dụng của bạn sẽ cần gửi lệnh hex tới thiết bị bên ngoài và xử lý chuyển đổi từ cho bất kỳ phản hồi có liên quan nào. Bạn có thể cần xem Serial.Write(byte[], int,int) để gửi dữ liệu hex những thiết bị.

Để có giải thích chi tiết hơn về lớp cổng nối tiếp .NET, hãy tham khảo http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx

1

Bạn có thể tạo một phiên bản của lớp SerialPort.
Ở đó bạn có thể xác định baudrate, tên cổng, vv
Sau khi gọi phương thức Open(), bạn có thể đọc hoặc ghi dữ liệu đến hoặc từ cổng.

var port = new SerialPort(); 
port.PortName = "COM4"; 
port.Open(); 
+0

Điều này không trả lời câu hỏi của anh ấy. –

Các vấn đề liên quan