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)
-   -   Giao tiếp RS232 trên PC (http://www.picvietnam.com/forum/showthread.php?t=274)

ngohaibac 05-01-2007 11:34 PM

Link của TUT của mình đây bạn ạ:

http://www.tailieuvietnam.net/downlo...OHB.100106.pdf

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

motconmeo 07-01-2007 08:54 PM

Chao anh Bắc,sau khi down Ct của anh chạy thử thì nó báo các lỗi sau:
-------------------Configuration: RS232TUT - Win32 Debug--------------------
Linking...
RS232TUT.obj : error LNK2001: unresolved external symbol "public: __thiscall CRS232TUTDlg::CRS232TUTDlg(class CWnd *)" (??0CRS232TUTDlg@@QAE@PAVCWnd@@@Z)
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/RS232TUT.exe : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.

RS232TUT.exe - 5 error(s), 0 warning(s)
Chắc do bản VC của nhà em nhỉ? Làm sao để sửa lỗi này , anh ơi . Giúp đỡ em zới ^^.
Cám ơn mọi người

ngohaibac 07-01-2007 10:33 PM

Chào em. Em chỉ rõ lại cho anh em down file nào nhé.

Để anh còn biết lỗi nào xảy ra nhé. Anh thì chạy vẫn bình thường. Không hiểu là chương trình có lỗi hay VC của em có lỗi nhỉ. Anh vẫn chạy bình thường em ạ.

Cảm ơn em đã report lỗi cho anh. Anh sẽ xem lại em nhé.

Chúc em thành công.

motconmeo 08-01-2007 10:08 PM

Anh Bắc ơi, em down ct của anh theo lk sau:http://www.picvietnam.com/forum//att...0&d=1136379519
Sau khi F5 thì nó xuất hiện lỗi :
--------------------Configuration: RS232TUTDlg - Win32 Debug--------------------
Linking...
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CMSComm::GetRuntimeClass(void)const " (?GetRuntimeClass@CMSComm@@UBEPAUCRuntimeClass@@XZ )
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetOutBufferSize(short)" (?SetOutBufferSize@CMSComm@@QAEXF@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetInputMode(long)" (?SetInputMode@CMSComm@@QAEXJ@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetInBufferSize(short)" (?SetInBufferSize@CMSComm@@QAEXF@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetInputLen(short)" (?SetInputLen@CMSComm@@QAEXF@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetRThreshold(short)" (?SetRThreshold@CMSComm@@QAEXF@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetSettings(char const *)" (?SetSettings@CMSComm@@QAEXPBD@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetHandshaking(long)" (?SetHandshaking@CMSComm@@QAEXJ@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetCommPort(short)" (?SetCommPort@CMSComm@@QAEXF@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetPortOpen(int)" (?SetPortOpen@CMSComm@@QAEXH@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: int __thiscall CMSComm::GetPortOpen(void)" (?GetPortOpen@CMSComm@@QAEHXZ)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMSComm::SetOutput(struct tagVARIANT const &)" (?SetOutput@CMSComm@@QAEXABUtagVARIANT@@@Z)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: struct tagVARIANT __thiscall CMSComm::GetInput(void)" (?GetInput@CMSComm@@QAE?AUtagVARIANT@@XZ)
RS232TUTDlg.obj : error LNK2001: unresolved external symbol "public: short __thiscall CMSComm::GetCommEvent(void)" (?GetCommEvent@CMSComm@@QAEFXZ)
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/RS232TUTDlg.exe : fatal error LNK1120: 17 unresolved externals
Error executing link.exe.

RS232TUTDlg.exe - 18 error(s), 0 warning(s)
Chắc do VC nhà em có vấn đề rồi :(, anh có thể dịch ra file .exe rồi post lại đc không ạ? Thanks anh nhiều :D

ngohaibac 09-01-2007 09:45 PM

3 Attachment(s)
Chào em.

Vậy là Visual C++ của em có vấn đề rùi đó. Đĩa VC++ trên thị trường hiện nay hình như có 2 loại thì phải. Một loại cài vào thì khi dịch có lỗi ngay.

Em hãy viết một chương trình đơn giản rùi dịch xem nhé. Nếu mà không dịch được thì em mua đĩa VC hoặc mượn đĩa khác nhé em. Anh gửi kèm file .exe cho em rùi đó. File RS232TUT.zip đó (vì diễn đàn k cho up file .exe).

Chúc em thành công.

hp_dk1 12-01-2007 09:43 AM

Tôi thấy luồng này rất hay và đã theo dõi từ khi luồng này mới bắt đầu. Tuy nhiên tôi thấy thế này, vì diễn đàn của mình phần nhiều là dân điều điện tử nên làm thiên về điện tử hơn, phần lập trình tạo giao diện tuy quan trọng nhưng theo tôi thì lập trình bằng VB khá đơn giản mà hiệu quả cũng không quá kém. Nếu tôi không nhầm thì bạn NHB đã có bài viết về lập trình truyền thông dùng VB rồi ở bên dientuvietnam rồi thì phải nhưng tôi cũng mạnh dạn đề nghị bạn mở một luồng giao tiếp RS232 dùng VB ở đây vì theo ý kiến chủ quan của tôi thôi: VB tương đối đơn giản và dễ dùng, hiệu quả cũng khá cao nếu khai thác tốt cũng rất mạnh và hợp với dân điện tử, người học sẽ nhanh chóng hơn, còn bạn nào đã học C++ thì cứ tiếp tục trao đổi; chắc là bạn NHB sẽ không mất quá nhiều thời gian cho luồng VB đâu.

Tôi thấy một chương trình bạn NHB viết bằng C++ chỉ có một vài chức năng nhỏ với giao diện đơn giản ( tôi nhìn tổng quan thôi chứ không có ý gì đâu nhé, tôi không biết VC++ ) mà cũng mất khá nhiều công phu, trao đổi, cả lỗi nữa còn một chương trình tương tự viết bằng VB thì đơn giản hơn nhiều bạn chỉ cần gọi một vài hàm và chương trình là OK. Tôi biết là chương trình nhỏ viết bằng VB thì không có vấn đề gì lắm nhưng trong quá trình làm thì cũng nảy sinh những vướng mắc cần phải giải đáp. Mới lại tôi cũng muốn làm PIC lập trình VB thì có thể trao đổi luôn ở đây chứ không cần cứ chạy qua chạy lại các diễn đàn.

Tôi cứ đề nghị bạn NHB như vậy nếu bạn có thời gian thì có thể xem xét ý kiến đề xuất của tôi còn nếu không thì bạn cứ coi như bài viết của tôi là một sự động viên khích lệ bạn thôi. Nếu bạn mở luồng mới dạy làm bằng VB thì cũng là điều may mắn cho các thành viên LT bằng VB như tôi chẳng hạn. Nếu bạn nào lo ngại VB chưa đủ mạnh thì sài VB NET hoặc C# lúc đó có gì thắc mắc cứ post lên, tôi biết thì sẽ giúp đỡ và ngược lại không biết thì tôi hỏi thôi. Thân ái chào và cảm ơn bác Ngô Hải Bắc!

ngohaibac 12-01-2007 12:44 PM

Cảm ơn bạn đã góp ý với mình.

Mình chọn viết bằng Visual C++ đơn giản vì nó dùng lập trình cấp thấp rất là tốt. Chúng ta hoàn toàn có thể can thiệp vào các phân cứng bên dưới của PC. Điều này rất là có ích. Ngoài ra, các website và những người làm về C rất là nhiều. Nhiều người đạt đến mức công phu rùi.

C xuất hiện trước khi có Visual Basic do đó nên các đồ án, nghiên cứu từ ngày xưa đều dựa trên chuẩn C. Khi mình dùng C thì chắc chắn là kế thừa được các project này.

Viết bằng Visual Basic thì không có gì khó khăn bằng VC++. Để mình suy nghĩ đã nhé.

Mình đã mở thêm thread lập trình giao tiếp bằng Matlab và đã thành công, đã có bạn test rùi, và cho ý kiến ở luồng:
http://www.picvietnam.com/forum//showthread.php?t=752

Còn trong thời gian tới mình sẽ hướng dẫn viết giao tiếp bằng Labview - một công cụ khá mạnh. Các bạn có thể khám phá Labview qua luồng:
http://www.picvietnam.com/forum//showthread.php?t=851

Chúc mọi người thành công.

motconmeo 12-01-2007 09:39 PM

Anh Bắc ơi, đúng là VC nhà em có vấn đề :D
Sau khi chỉnh sửa lại thì chạy ngon lành rồi anh ạ . Cám ơn anh nhiều

fight 16-02-2007 02:04 AM

Tôi dùng code của Ramon de Klein( viết riêng cho lớp CSerial) khi chạy chương thử chương trình Hello world thì bị lỗi(lỗi là Unable to open COM-port(error code 5)). Có bác giúp tôi được không (link download code này là http://www.codeproject.com/system/Serial.asp)

fight 23-02-2007 09:48 PM

Sao không có bác nào trả lời hết vậy.Ai đã thử dùng code này của Ramon de Klein( viết riêng cho lớp CSerial) chưa

ngohaibac 25-02-2007 02:03 AM

Chào bạn. Xin lỗi vì sự trả lởi chậm trễ. Mình mới về quê nghỉ tết bi giờ mới lên.

Mình có xem chương trình này rùi. Chương trình viết trên nền Win32 (dùng các hàm API - lập trình Windows) chứ không phải MFC.

Mình chạy thấy bình thường, tuy nhiên file demo là một ứng dụng đơn giản để test thử khi truyền đi một kí tự đặc biệt rùi nhận về ngay. Do đó nó dùng để test khi cổng RS232 được nối tắt.

Lập trỉnh Win32 tức là lập trình theo đáp ứng các thông điệp, bạn đọc kĩ chương trình sẽ có hàm API waitcomevent hàm này sẽ chờ để xảy ra sự kiện nào đó ở cổng RS232 nên khi không có dữ liệu về hay có lỗi gì thì máy treo ngay.PC dùng toàn bộ 100%, bó tay:D.

Mình đã thử cho trễ khoảng 1s vào hàm phục vụ thông điệp thì chạy ổn nhưng có điều là khi truyền tốc độ cao sẽ mất dữ liệu.

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

kiethnt 03-03-2007 05:22 PM

Có bác nào biết kết nối cổng COM RS232 qua 3964R Siemens protocol không làm ơn chỉ dùm mình nhá. Bởi vì hiên nay minh đang làm đề tài kết nối PC với PLC Siemens dùng protocol 3964R. Mình có source code viết bằng Bỏland C++3.1 nhưng không thể sử dụng được vi nó chỉ chạy tren Win 98. Các bạn tham khảo toaàn bộ source minh upload rồi giúp minh nhá. Cám ơn trước nha.

kiethnt 03-03-2007 05:59 PM

Serial RS23 với 3964R Siemen protocol
 
Bạn nào biết chương trình gửi data từ PC đến controller Siemens có 3964R protocol làm ơn chỉ dùm. Mình có chưong trình này nhưng viết bằng Borland C++3.1 chỉ chạy trên Win 98 mà đế tài minh phai sử dụng Win XP, mình không biết lam sao để có thể chạy chương trình này trên Win XP. Bạn nào có thể viết chương trình này bằng VC++ chi dùm mình nhá. Minh có gửi kèm theo toaàn bộ source code cua nó đây.

kiethnt 03-03-2007 06:04 PM

file đính kèm
 
1 Attachment(s)
mình quên upload file đính kèm. Xin lổi nha

namqn 03-03-2007 07:17 PM

Bạn nên tìm hiểu thuật toán hiện thực giao thức trong mã nguồn (không quá khó khăn với mã nguồn C), sau đó tìm hiểu cách thực hiện những công việc liên quan đến cổng RS-232 (serial port) cho Windows NT/2000/XP, vì những hệ điều hành này không cho phép truy xuất trực tiếp phần cứng theo cách mà chương trình mẫu đã sử dụng. Về giao tiếp RS-232 trên Windows thì box này chính là nơi bạn có thể tìm thông tin, ngohaibac đã giới thiệu cho một số ngôn ngữ rồi.

Thân,


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

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