2010-10-03 20 views
11

Tôi đang phát triển một sản phẩm được giao tiếp qua USB. Tôi muốn viết một ứng dụng điều khiển cho nó, nhưng tôi không thể lập trình một GUI cho poo, vì vậy tôi nghĩ ra cách sử dụng một trang web (địa phương vào thư mục cài đặt của ứng dụng) làm giao diện cho chương trình.Bất kỳ cách nào để sử dụng HTML làm giao diện cho một chương trình C/C++?

Vì vậy, dòng thông tin liên lạc sẽ là: người dùng -> trang HTML (không tổ chức - đó là địa phương) -> chương trình C++ -> cổng USB

Tôi muốn làm theo cách này vì đó là di động, ít nhất là UI khôn ngoan và tôi có thể viết HTML trôi chảy.

Câu hỏi của tôi là: có thể sử dụng trang HTML để nói chuyện với cổng USB thông qua chương trình C++ không?

Nếu không, tôi sẽ tìm hiểu GTK - đủ di động.

PS. Điều này có thể thực hiện được với PHP, hoặc (eugh) Java không?

EDIT: Chỉ cần nhận ra PHP là ngôn ngữ phía máy chủ - nó sẽ không hoạt động trong tình huống của tôi vì trang cần được chạy như một chương trình (IE, chỉ cần sử dụng trình duyệt web và HTML làm GUI) xử lý thực tế được thực hiện bằng C/C++)

+0

PHP không * có * chỉ chạy phía máy chủ; nó chỉ được sử dụng phổ biến nhất theo cách đó. http://gtk.php.net/ –

+0

exec ssi (http://en.wikipedia.org/wiki/Server_Side_Includes) ??? Tôi không biết nếu nó hoạt động, làm thế nào nó hoạt động, nếu nó tốt hay xấu ... thực sự tôi không biết gì về đề nghị này: vì vậy nó không phải là một câu trả lời – pmg

Trả lời

8

Bạn thực sự có thể tạo các ứng dụng web bằng C++ bằng bộ công cụ gọi là Wt (API tương tự với Qt). Có một trình duyệt độc lập cũng như một mô-đun cho Apache. Bằng cách này, bạn có thể sử dụng ngôn ngữ lập trình C++ giống như cách bạn làm với ASP.NET, và do đó bạn cũng có thể sử dụng mã C++ hiện có của mình. Nó không thực sự thanh lịch mặc dù.

Tôi thực sự khuyên bạn nên học Qt và viết toàn bộ ứng dụng lên trên nó. Nó cực kỳ di động và có một API mở rộng cho tất cả mọi thứ - đó là một khung ứng dụng; GTK + chỉ là giao diện người dùng, và trong C, mặc dù trình bao bọc GTKmm cho C++ là tốt đẹp. Kiểm tra xem nó tại http://qt.nokia.com - nó có sẵn dưới GNU LGPL.

+0

Cảm ơn thông tin về GTK - Tôi nghĩ đó là một loại công cụ. Tôi chắc chắn sẽ gắn bó với Qt rồi. Tôi đã nhúng ngón chân vào nó trước đây, vì vậy tôi sẽ loại bỏ IDE Qt và phát triển. – Bojangles

+0

@JamWaffles Tôi khuyên bạn chỉ cần lấy SDK mới nhất từ ​​trang web Qt, IDE đã có một số cập nhật quan trọng trong các phiên bản trước. – CMircea

+1

Tôi khá chắc chắn (98%) Tôi sẽ sử dụng Qt - cảm ơn lời khuyên :) – Bojangles

6

Tôi đã sử dụng mongoose để kiểm soát máy chủ thông qua HTTP/HTML. Tôi tạo ra các trang trực tiếp trong C + +, nhưng tôi không thấy lý do tại sao bạn không thể gọi trình thông dịch PHP để hiển thị nội dung trang.

+0

ý tưởng tốt đẹp - Tôi sẽ cung cấp cho một cái nhìn mongoose. Đối với các chức năng PHP, nó sẽ không được cần thiết trong tình huống này - Tôi chỉ cần một số cách kiểm soát USB vv, được thực hiện bởi C. – Bojangles

2

Nếu bạn muốn thực hiện điều đó - chương trình C++ của bạn sẽ phải đảm nhận vai trò của máy chủ http. AFAIK - rất nhiều tiện ích cấu hình router hoạt động theo cách này (ngoại trừ Apple Express Express/Extreme) - chúng có httpd nhỏ chạy với các trang html được phục vụ thông qua CGI.

+0

Đó là một ý tưởng. Bạn có biết một máy chủ đó là nền tảng chéo và có thể chạy như một ứng dụng (không phải là một cái gì đó giống như Apache - tôi có nghĩa là một cái gì đó nhỏ và nhẹ)? – Bojangles

+0

Không thực sự, nhưng tôi khá chắc chắn rằng bạn có thể thực hiện chúng mình bằng cách sử dụng các cuộc gọi hệ thống đơn giản. Ngoài ra - những người khác đang đề xuất mongoose. Tôi muốn đề nghị bạn chụp! – Eimantas

1

Điều gần nhất tôi có thể nghĩ là viết trình cắm Firefox/Chrome/IE/Safari và yêu cầu người dùng cài đặt trình duyệt của họ để chạy GUI để điều khiển thiết bị của bạn.

+0

Ý tưởng hay. Vấn đề duy nhất là có rất nhiều trình duyệt khác nhau tôi muốn lãng phí toàn bộ cuộc đời của tôi bằng văn bản bổ sung cho họ! : P – Bojangles

5

Trừ khi bạn viết một plugin trình duyệt (không phải rất di động), trình duyệt xem trang web không thể chỉ gọi các hàm trong chương trình C++ của bạn.

Nếu bạn định điều khiển thiết bị từ trình duyệt, về cơ bản chương trình C++ của bạn cần kết hợp máy chủ web. Vì vậy, khi một liên kết hoặc một nút được nhấp vào, chương trình C++ sẽ nhận được một kết nối trên một ổ cắm nó nghe, và có thể làm bất cứ điều gì. Đó là một điều hoàn toàn đáng kính để học cách làm (có thể sử dụng một số thư viện của bên thứ ba để trợ giúp về khía cạnh máy chủ web), nhưng học cách viết một ứng dụng GUI, và sau đó là trực tiếp hơn đến điểm ở đây ;-)

Chắc chắn Java có thể thực hiện tương tự. Bạn thậm chí có thể chạy PHP từ dòng lệnh và thực hiện máy chủ của bạn trong PHP, mặc dù đó là loại bên trong ra từ cách PHP thường được sử dụng.

+0

Cảm ơn vì điều đó :) Dựa trên những gì tôi đã đọc, tôi chắc chắn nên tìm hiểu GTK hoặc một cái gì đó - nó sẽ mang lại lợi ích nhiều hơn trong thời gian dài, cũng như ứng dụng này hoạt động :) – Bojangles

1

Bạn có thể nhúng một máy chủ http đơn giản (ví dụ http://code.google.com/p/mongoose/) để hiển thị giao diện REST cho chức năng ứng dụng của bạn và phục vụ trang HTML có thể thực hiện cuộc gọi đến giao diện.

2

Khám phá HTMLayout. Các thành phần cấp thấp, HTMLayout chính nó, là miễn phí. Đó là Windows chỉ vào lúc này, theo như tôi biết, nhưng công việc đang được tiến hành để chuyển nó sang Linux và Mac. (Cổng Windows Mobile đã tồn tại). Họ cũng có Sciter, được xây dựng xung quanh HTMLayout và chứa các cơ sở kịch bản. Kiểm tra các bản demo, chúng thật ấn tượng!

(Xin lỗi nếu nó có vẻ giống như một plug. Tôi không liên kết với chúng, nhưng tôi thực sự thích HTMLayout :)).

+0

Cảm ơn, nhưng điều này prog cần phải được nền tảng chéo, bắt đầu với những thứ UNIX đầu tiên, sau đó vật lý. – Bojangles

+0

Erm ... nó xuất hiện tôi có nghĩa là "UNIX công cụ đầu tiên, sau đó Windoze". Tôi không biết nơi vật lý đến từ đâu! – Bojangles

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