2015-01-05 13 views
5

Có thể sử dụng cổng COM trên hộp linux để đọc giá trị của công tắc không? Tôi nghĩ rằng nó nên có thể với ioctl(), nhưng tôi đã đấu tranh một chút để tìm một ví dụ so sánh. Tôi chỉ cần một đầu vào, và chỉ cần nó để đọc trong một giá trị HIGH/LOW. Tôi nghĩ rằng tôi chỉ có thể sử dụng ioctl để thiết lập một trong các chân cao, và dây một chuyển đổi giữa đó và pin khác, một lần nữa sử dụng ioctl để đọc giá trị của pin thứ hai()Có thể sử dụng cổng Nối tiếp 9 Pin với tên "GPIO" bằng ioctl() không?

Lý do là tôi có một sự tin tưởng máy chủ cũ chạy trong ga-ra, tôi muốn làm cái gì đó sẽ chảy ra và nói xem cửa nhà để xe có mở không, Vì máy chủ ngồi cạnh cửa, tôi nghĩ sẽ đơn giản chỉ là một công tắc ở phía sau cổng com (hiện chưa được sử dụng)

Cấp, tôi có thể tiêu tốn một vài cân Anh, tự cứu bản thân mình và sử dụng arduino hoặc ESP8266, nhưng điều này giờ đây khiến tôi tò mò!

+0

Loved ứng dụng thực tế của bạn, 1 ... –

+0

Câu hỏi này dường như là off-topic vì nó là khoảng "Tôi tự hỏi, nếu", thay vì một vấn đề lập trình cụ thể. – abelenky

+0

Tôi đã hơi viết lại nó, tôi có một câu hỏi lập trình chính hãng – phatmanace

Trả lời

4

Có, chắc chắn bạn có thể thực hiện việc này. Có một số dòng trên cổng nối tiếp có thể được sử dụng như GPIO. Một trong số họ (trên pin9 tôi nghĩ) là RING được sử dụng trên các chế độ nối tiếp cũ để báo hiệu các cuộc gọi đến.

Bạn có thể đọc nó như thế này:

unsigned mask = TIOCM_RNG; 
unsigned status; 
int fd; // your serial port file descriptor. 

/* Get current status of the control lines in mask */ 
if (ioctl(fd, TIOCMGET, &status) == -1) { 
    perror("ioctl(TIOCMGET)"); 
} 

/* now evaluate status */ 

Bạn cũng cần phải tạo ra một điện áp mà bạn có thể áp dụng đối với dòng nhẫn. Một cách rẻ tiền để làm điều này là truyền một số luồng bit xen kẽ. Ví dụ. gửi 0x55 ở bất kỳ tốc độ truyền nào.

Sau đó, bạn có thể nhấn vào điện áp từ chốt TX. Tách điện áp dương và âm bằng hai điốt và đệm chúng bằng hai tụ điện. Điều đó sẽ cung cấp cho bạn điện áp tích cực và tiêu cực tương thích với đường vòng.

Đây là sơ đồ nên hoạt động. Điều chỉnh điốt và tụ để nếm, nhưng đừng phát điên với tụ điện. 10µF phải là mức tối đa.

Generating signal voltages from UART tx-pin

+1

Cảm ơn, trông rất hứa hẹn, tôi sẽ thử nó trong ngày hôm sau, và chấp nhận câu trả lời nếu nó hoạt động, tôi đã upvoted trong khi chờ đợi – phatmanace

+0

cổng nối tiếp nhất sẽ xử lý bất cứ điều gì dưới 1V là thấp, nếu các dây cáp ngắn không cần điện áp âm. – Jasen

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