Thư viện GPIO cho C


7

Tôi muốn sử dụng các chân GPIO trên Raspberry Pi 2 của mình, nhưng tôi không muốn sử dụng Python vì cá nhân tôi không thích ngôn ngữ này. Tuy nhiên, tôi dường như không thể tìm thấy bất kỳ thông tin nào liên quan đến việc sử dụng C, chỉ Python.

Có API C chính thức không? Nếu vậy, tôi có thể tìm thấy hướng dẫn về nó ở đâu? Nếu không, tôi có những lựa chọn thay thế nào?


Đây không phải là C cụ thể nhưng để được hỗ trợ ngôn ngữ lập trình GPIO chung, hãy xem danh sách tại elinux.org/RPi_GPIO_Code_Samples
joan

Câu trả lời:


10

Không có thư viện chính thức

Có một số lựa chọn. Tôi thường sử dụng http://wirespi.com . Điều này được sử dụng cho các gpiotiện ích có trong các bản phát hành Raspbian gần đây.

pigpioThư viện của Joan có tại https://github.com/joan2937/pigpio và cô cũng có trình bao bọc Python. Nếu bạn muốn sử dụng ổ cắm hoặc daemon, điều này được khuyến nghị và có hỗ trợ tốt cho phần cứng và truy cập hàng loạt vào các ngân hàng chân.

Cả hai đều có tài liệu phong phú.

Có một vài người khác, nhưng một số có vẻ hơi hẹn hò.


2

Bạn không đề cập đến một hệ điều hành, như Milliways tôi sẽ cho rằng bạn có nghĩa là Raspbian hoặc một số GNU / Linux khác. Windows IoT sẽ tách biệt.

Tất cả các thư viện python là trình bao bọc trên thư viện C, điều này không phải là bất thường. Tạo các thư viện từ đầu trong một cái gì đó không phải là C. Có ba:

Chúng đã tồn tại ít nhất một vài năm và được duy trì tích cực (ví dụ: phiên bản cuối cùng của libbcm2835 là 3-4 tháng trước).

Tuy nhiên, bạn không cần bất kỳ thư viện tùy thuộc vào những gì bạn muốn làm. Như đã đề cập ở đó, ngoài giao diện sysfs cho những thứ cơ bản, còn có giao diện cấp độ C người dùng di động cho I2CSPI sử dụng trình điều khiển hạt nhân. Điều này chỉ cần rời khỏi PWM - để truy cập và sử dụng các kênh phần cứng bạn cần sử dụng một trong ba thư viện đó. Hoặc, như joan đề cập trong một nhận xét về câu hỏi khác đó, nếu bạn đang cố gắng đếm xung rất nhanh (tôi sẽ thử nghiệm một vài phương pháp trong trường hợp đó).

Tôi chưa thử mọi sự kết hợp, nhưng giả sử các thư viện cụ thể của pi được mã hóa hoàn toàn, bạn sẽ có thể trộn và kết hợp chúng với các giao diện di động (ví dụ: sử dụng API I2C thông thường và WiredPi cho PWM) miễn là bạn sử dụng chúng cho chân riêng biệt. Điều này có vẻ là một cách tiếp cận kỳ lạ, nhưng nó có ý nghĩa nếu bạn đang làm việc với mã mô-đun và muốn làm cho các bộ phận riêng lẻ càng di động càng tốt. Ví dụ: nếu bạn muốn viết giao diện cho cảm biến I2C, hãy đặt nó xung quanh API trình điều khiển hạt nhân. Sau đó, nếu bạn muốn sử dụng nó trong một chương trình với PWM, hãy sử dụng một trong ba thư viện cho PWM. Mã được viết bằng pigpio / WiredPi / libbcm2835 sẽ chỉ hoạt động trên Raspberry Pi; mã được viết bằng API trình điều khiển kernel sẽ hoạt động trên mọi hệ thống linux.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.