PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Lập trình giao tiếp RS232 trên PC bằng Visual C++.Net (http://www.picvietnam.com/forum/showthread.php?t=1145)

falleaf 29-05-2007 05:12 PM

Anh Hùng ui, anh nhớ gõ tiếng Việt có dấu bằng telex hoặc vni, vì bộ gõ trên diễn đàn hoạt động tốt, không cần cài bộ gõ khác. Hoặc trên diễn đàn cũng có để bộ download Unikey sẵn rồi.

Chúc vui.

hungbkhn 29-05-2007 06:58 PM

he he, xin lỗi thực ra vì cái bàn phím đánh ko quen nen nhác đánh tiếng Việt.
:)
Với giải pháp của Bắc và bvk thì:

nếu cứ hiện kết quả detect ra:
- người sử dụng (giả sử hiểu COMx là cái gì) chẳng may bấm nhầm số cổng đã kết nối vẫn báo lỗi.
- nếu ko hiểu COM là cái gì (ví dụ anh :)) thì ko biết bấm cái gì

Nên trên giao diện chỉ có các nút Connect và DisConnect.

Giải pháp đọc thanh ghi lưu giá trị cổng là một cái. Còn giải pháp nào nữa thì anh cũng chưa biết :).
Cũng chưa chạy cái của Bắc nhưng giao diện a nhìn thì chắc chắc mắc lỗi trên.

Hi vọng giờ thì rõ rùi.


Nếu em hiểu đúng thì ý anh là ở cái cách thiết kế giao diện chuơng trình, nếu giờ em chon COM1, nhưng chưa connect, lát trong máy có thằng nào đó nó chiếm mất, đến khi em bấm connect thì boong, lỗi.

Vậy Bắc nên để cái phần cấu hình ở 1 dialog connect, mỗi khi load dialog này nó tìm tất cả port nào còn thể hiện cho người dùng, người ta chọn xong cũng là connect luôn.

ngohaibac 29-05-2007 11:42 PM

:D Em hiểu ý anh mà.

Vấn đề này chẳng có gì là khó cả. Trong hàm ngắt của nút Connect thì sẽ kiểm tra thử xem có mở được cổng mà người dùng chọn hay không? Nếu không thì báo là không mở được. Chứ không Buzz một cái đâu anh ạ :D. Thế thì chán lắm.

Anh yên tâm, vấn đề này em đều đã suy nghĩ cả rùi.

Như đã nói ở trên em scan posts bằng cách pollling, thử mở tất cả xem cái nào mở được thì cho vào list thôi. Anh chờ cái em update lại nhé :D.

Chúc anh thành công.

hungbkhn 30-05-2007 01:35 AM

Cái này đến đoạn a với e đang nói a nghĩ ko dễ đâu. Tất nhiên là bọn Tây nó làm cả rồi. OK a đợi, nhưng để xem e code vấn đề này có nhanh bằng a trước đây ko :)



Trích:

Nguyên văn bởi ngohaibac (Post 8998)
:D Em hiểu ý anh mà.

Vấn đề này chẳng có gì là khó cả. Trong hàm ngắt của nút Connect thì sẽ kiểm tra thử xem có mở được cổng mà người dùng chọn hay không? Nếu không thì báo là không mở được. Chứ không Buzz một cái đâu anh ạ :D. Thế thì chán lắm.

Anh yên tâm, vấn đề này em đều đã suy nghĩ cả rùi.

Như đã nói ở trên em scan posts bằng cách pollling, thử mở tất cả xem cái nào mở được thì cho vào list thôi. Anh chờ cái em update lại nhé :D.

Chúc anh thành công.


ngohaibac 30-05-2007 02:14 AM

Setup RS232 Application
 
9 Attachment(s)
Chào các bạn.

Mình đã đóng gói bằng Installed Shield và đã cài đặt thử trên máy tính khác. Chạy ngon lành rùi nên upload lên cho anh em.

Do ứng dụng đòi hỏi phải có nhiều file cài vào hệ thống (do sử dụng liên kết động) nên mặc dù file chạy ứng dụng nhỏ nhưng các file cần copy vào System không nhỏ.

Anh em download về dùng thử và cho ý kiến, cải thiện dần nhé.

Cách dùng: Các bạn download toàn bộ 9 phần về rùi giải nén ra một thư mục rùi chạy file setup.exe để cài đặt nhé.

Giao diện hơi mới một tí của chương trình:


Chúc các bạn thành công.

hungbkhn 30-05-2007 04:17 AM

hi e, chắc anh là người đầu tiên chạy thử :), vì lệch múi giờ mà. Em update nhanh quá.
Theo anh hiểu thì để test thì đơn giản dùng cái Hyperterminal là đủ rồi, nên ct e viết là để ứng dụng hay để test. ? hay là để mang tên PICVN hi :)
Nếu để ứng dụng anh đưa ra một cái lưu đồ a viết, em xem thế nào nhé.

Mục đích của "chương trình ứng dụng" mà người lập trình cần xử lí với thằng RS232 là khi USER ấn CONNECT thì chương trình
hoặc hoạt động OK
hoặc báo thiết bị chưa CONNECT
hoặc báo chưa CONNECT đúng cổng

Xuất phát từ 2 trường hợp:
1. thiết bị dùng cổng COM cố định
2. thiết bị tạo cổng COM ảo

Giải quyết:
1. Trong hàm của “CONNECT” phải dùng cổng available. Có 2 khả năng: hoạt động hoặc không có tín hiệu.
1.1 Nếu hoạt động: ok
1.2 Nếu không có tín hiệu: ở đây mình cần thông báo chưa CONNECT đúng cổng

2. Thiết bị tạo cổng COM ảo
Đọc thanh ghi chứa các cổng RS232 khi ứng dụng khởi động và khi ấn nút CONNECT, nếu có khác nhau thì so sánh và tìm ra cổng mới được cập nhật và mở cổng. Nếu ko thay đổi thì thông báo chưa CONNECT.

Nếu ghép lại để biện luận chung thì:
hoặc OK,
hoặc chương trình sẽ báo: “Bạn chưa kết nối đúng cổng hoặc chưa kết nối thiết bị !”.



Trích:

Nguyên văn bởi ngohaibac (Post 9005)
Chào các bạn.

Mình đã đóng gói bằng Installed Shield và đã cài đặt thử trên máy tính khác. Chạy ngon lành rùi nên upload lên cho anh em.

Do ứng dụng đòi hỏi phải có nhiều file cài vào hệ thống (do sử dụng liên kết động) nên mặc dù file chạy ứng dụng nhỏ nhưng các file cần copy vào System không nhỏ.

Anh em download về dùng thử và cho ý kiến, cải thiện dần nhé.

Chúc các bạn thành công.


Mecha 30-05-2007 06:43 AM

Theo anh nghĩ, mình không phải dân gõ code chuyên nghiệp như ITers nên chỉ cần dùng được hai chú VB6.0 và VC++6.0 là đủ sài cho các ứng dụng có liên quan đến điều khiển rồi. Anh thấy trong VB làm giao diện nhanh hơn nhưng code viết trong VC mang tính chuyên nghiệp hơn.

Mecha 30-05-2007 06:58 AM

Bác Hùng và Bắc còn thiếu một trường hợp: giả sử kết nối trên cổng COM hiện thời đang okie thì Mecha rút cái cáp ra :), sau đó cắm vào một cổng COM khác => cry.
Giải pháp: có thể dùng Timer quét cổng để phát hiện "mất kết nối", sau đó tiếp túc quét tất cả các cổng COM cho đến khi phát hiện có kết nối mới.

ngohaibac 30-05-2007 09:30 AM

Cảm ơn anh Mecha.

Em sẽ chú ý thêm trường hợp này. Em còn nhiều cái phải viết thêm vào mà.

Code này hoàn toàn có thể chuyển về bản VC++ 6.0 anh ạ. Em nghĩ chạy vô tư ngay :D.

Còn một số chức năng nữa cần phải hoàn thiện.

@hungbkhn: đúng rùi đó anh. Nhưng em chưa viết cho thiết bị dùng cổng COM ảo. Vì em không có cáp chuyển đổi :D nên chưa test được xem thế nào cả.Có gì xin trợ giúp của anh :D.

Chúc các anh thật là mạnh khỏe.

hungbkhn 30-05-2007 02:06 PM

hẹn em và mọi người 1 thời gian nữa nhé sẽ tham gia nhiều trên diễn đàn,
giờ thì đạng bận,
mà cái của Bắc cài ra ko thấy chỗ Uninstall hay tại máy anh nó ko vào.
Chúc em thi học kì tốt.



Trích:

Nguyên văn bởi ngohaibac (Post 9014)
Cảm ơn anh Mecha.

Em sẽ chú ý thêm trường hợp này. Em còn nhiều cái phải viết thêm vào mà.

Code này hoàn toàn có thể chuyển về bản VC++ 6.0 anh ạ. Em nghĩ chạy vô tư ngay :D.

Còn một số chức năng nữa cần phải hoàn thiện.

@hungbkhn: đúng rùi đó anh. Nhưng em chưa viết cho thiết bị dùng cổng COM ảo. Vì em không có cáp chuyển đổi :D nên chưa test được xem thế nào cả.Có gì xin trợ giúp của anh :D.

Chúc các anh thật là mạnh khỏe.


ngohaibac 30-05-2007 05:16 PM

Để uninstall phần mềm này. Anh chạy lại file setup.exe rùi chọn chức năng Remove là được anh ạ.

Mọi người chú ý: các bạn download toàn bộ 9 file về rùi giải nén vào một thư mục và cài đặt bình thường.

Chúc các bạn thành công.

ngohaibac 09-06-2007 11:16 PM

Chương trình mình có lỗi nhỏ. Do trong hàm ngắt nhận xử lý nhiều quá nên nó nhận có thể bi mất dữ liệu do truyền tốc độ cao.

Các bạn download tạm phiên bản cũ về nhé.
http://bmnhy.dieukhien.net/NOHB/RS23...20Project).rar

Mình sẽ sửa lại phần này cho ok.

Chúc các bạn thành công.

kid81 13-08-2007 03:18 AM

Trích:

Nguyên văn bởi ngohaibac (Post 8891)
Chào các bạn.

Mình đã làm xong cơ bản giao diện chương trình giao tiếp RS232 bằng Visual C++.Net...........................

Bắc ơi, chương trình mà Bắc viết bằng VC++, giờ muốn gởi dữ liệu ra VĐK thì phải viết thế nào vì VDK chỉ thao tác trên số Hex hay Binary thôi, đúng không?ví dụ giờ muốn VĐK (89c52) hiểu là số 1 thì phải gởi thế nào?có phải gởi chuổi "0x31" như thế này ra bằng lệnh m_mscomm.SetOutput((COleVariant)m_mstransfer) là VDK nó hiểu được đây 0x31 ~số 1 không, hay phải làm sao
Mong giúp đỡ.

toikhongtutin 21-08-2007 11:17 AM

em cam on cac tai lieu cua cac anh, em dang lam luan van ve truyen du lieu khong day theo chuan "CDMA" nhung khong co tai lieu va huong giai quyet nhu the nao co ai biet thi giup do em, em thanh that cam on.
Neu biet goi mail cho em nha. cuong.1032869@student.ctu.edu.vn

dotuanphong 28-08-2007 10:31 AM

cân điện tử
 
Chào các bạn!
Tôi có chương trình cân lấy dữ liệu từ đồng hồ cân qua công com máy tính, chương trình viêt bằng fox 2.6 win chạy trên Win 98, nay tôi cài upgrade win XP thì chương trình không còn đọc được dữ liệu qua cổng com nữa. Như vây mình có thể khắc phục được không, xin các bạn giúp dùm nhé!


Múi giờ GMT. Hiện tại là 07:06 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam