PDA

View Full Version : Giao tiếp RS232 trên PC


ngohaibac
04-01-2006, 08:00 PM
Chào các bạn tôi xin đưa cho các bạn chương trình mẫu để giao tiếp với RS232 trên PC. Chương trình này tôi viết bằng Visual C++ trong bộ Microsoft Studio 6.0 của Microsoft, các bạn dịch lại ra file .exe để chạy. Phần hướng dẫn chi tiêt tôi sẽ gửi sau khi được kiểm duyệt kĩ lưỡng. Chương trình này còn đơn giản. Sẽ có nhiều phiên bản sau ra đời.

Giao diện chương trình như sau:


http://luckytoki.com/haibac/download/Visual%20C/image/RS232TUT.gif

Hình 1: Giao diện chương trình

Chương trình có chức năng sau:

- Nhập kí tự hoặc xâu kí tự vào EditBox Transfer, điều chỉnh tham số giao tiếp trên các ComboBox. Nhấn nút Send để gửi dữ liệu ra cổng COM.

- Đồng thời với nó nếu có dữ liệu truyền vê cổng Com thì dữ liệu sẽ được hiển thị lên EditBox Receive. Khi bạn nhấn vào Clear thì sẽ xoá dữ liệu hiển thị trên EditBox này

Chú ý:

Để có thể test luôn chương trình các bạn nối tắt chân 2 và chân 3 của RS232 lại với nhau chính là nối chân RxD và TxD để chúng ta truyền dữ liệu ra RS232 sau đó nhận dữ liệu luôn.


http://luckytoki.com/haibac/download/Visual%20C/image/rs232_pin.gif
Hình 2: Sơ đồ đấu chân của RS232


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

ngohaibac
10-01-2006, 09:10 PM
Chào các bạn, sau một số ngày cung phu làm TUT này, cuối cùng TUT cũng được anh Falleaf phê duyệt.

TUT này là về cách lập trình giao tiếp RS232 trên PC bằng công cụ Visual C++ 6.0 trong bộ Visual Studio 6.0 của Microsoft. Tài liệu có nói chi tiết về các thuộc tính của MSComm và cũng hướng dẫn rất chi tiết về cách lập trình.

Tài liệu này bao gồm 78 trang( hơi cung phu) có hình vẽ minh hoạ đầy đủ từng bước đảm bảo các bạn làm theo là được ngay.

Đây là một hình minh họa trong TUT của tôi.

Thứ nhất, kiểm tra các thuộc tính của cổng COM

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0027.gif

Thứ hai,tạo dự án

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0028.gif

Thứ ba,thêm thư viện MSComm:

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0043.gif

ngohaibac
10-01-2006, 10:22 PM
Thứ tư,tạo giao diện:

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0044.gif

Thứ năm,đặt các thuộc tính cho điều khiển:
http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0046.gif


Thứ sáu.thêm các biến điều khiển:

http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/BAC_0028.gif

Thứ bảy,viết mã cho chương trình:
http://luckytoki.com/haibac/download/Visual%20C/image/PVN_0007.gif

Đây là tài liệu, xin mời các bạn down về:

http://www.picvietnam.com/download/Tutorial/TUT01.03.PVN.NOHB.100106.pdf

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

VinhVT
11-01-2006, 06:07 PM
Chào các Bác, mình đang cần tìm hiểu lập trình qua cổng COM mà không dùng các OCX. Bác nào biết bảo mình với, Xin trân trọng cảm ơn nhiều

ngohaibac
11-01-2006, 06:20 PM
Vấn đề này thì bạn phải dùng các hàm API. Vấn đề này bạn có thể mua quyển "Lập trình Windows" của tác giả nào đó mình không nhớ.

Vấn đề này tôi đang làm để có thể viết một thư viện cho PVN. Thư viện liên kết động có chức năng như MSComm nhưng độ ổn định cao hơn, tôi hoàn toàn lập trình mức hệ thống giao tiếp gần với hệ thống và các bạn dùng thư viện này tương tự như qua trung gian MSComm. Nhưng thư viện này là do người VN tự làm cho mình.

Thư viện này sắp sửa được đưa ra trong thời gian tới. Bạn chờ nhé.

phamhoangdung
12-01-2006, 03:02 PM
Neu bac VinhVT khong muon dung OCX thi nen dung Mscomm cua Vb6 co san de ma lap trinh. Khi do ban chi can add file port.dll vao trong system cua window la co the lam duoc roi.

bkav_hcm
13-01-2006, 08:19 PM
Cám ơn anh N H Bắc rất nhiều, giá mà tôi có tài liệu của anh sớm hơn thì tốt quá.

Tôi mới bắt đầu dùng VC nên không biết, mong anh Bắc và mọi người chỉ hộ, thanks!:

Khi tôi điều chỉnh lệnh
m_mscomm.SetInputMode(0); // 0 - Text Mode , 1- Binary Mode

thành:

m_mscomm.SetInputMode(1);

thì chương trình chạy không đúng

Cho tôi hỏi là nếu mình chuyển sang Binary Mode, ngoài chỉnh lệnh m_mscomm.SetInputMode như trên thì mình có cần chỉnh sửa gì nữa kô? như kiểu biến chẳng hạn...

Rất mong sớm nhận được câu trả lời của anh và mọi người, thanks!

PS: file mẫu anh gửi hơi có vấn đề, sau khi nhập data, nhấn Enter thì nó Close.

ngohaibac
16-01-2006, 11:52 PM
Chào các bạn.

Có lẽ để cho các bạn hiểu TUT này hơn tôi xin đưa cho các bạn một link bên dientuvietnam.net để các bạn có thể hiểu thêm về giao tiếp nối tiếp này.
http://dientuvietnam.net/forums/showthread.php?t=963

còn về cái sourcecode ở trên thì tôi nói thế này: thực chất thì bạn dùng kiểu Text Mode hay là kiểu Binary Mode thì cũng đơn giản là truyền xâu kí tự qua RS232. Sau đó, có dữ liệu đến RS232 thì nhận lại và hiển thị trên màn hình. Đơn giản thế thôi.Do đó việc lựa chọn mode là không quan trọng.

Còn tại sao ấn nút Enter khi nhập xong thì thoảt khỏi điều khiển là do.Nút Exit trong chương trình này mặc định là Default. Nên khi ấn Return thì nó có tác dụng lên nút Exit.Cái này hoàn toàn giống như VB thôi.

Bạn làm như sau: kích phải chuột vào nút Send, chọn Properties.Chọn sang Tab Styles bạn check Default button


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

bkav_hcm
23-01-2006, 09:37 AM
Dựa vào tài liệu của N H Bắc tôi đã viết lại chương trình cho Serial Port đơn gian hơn, post lên cho những ai mới học tham khảo ( vì chức năng ít hơn nên mới đơn giản hơn của NHB :) )

VinhVT
08-02-2006, 11:58 AM
Chao các Bạn !. Bạn viết sử dụng OCX cũng rất tốt. Bạn có sample dùng API không với cổng COM thì cho mình tham khảo nhé. À, mình đang viết chương trình thu dữ liệu qua cổng COM và hiển thị ra màn hình. Nếu bạn có thì cho mình tham khảo nhé. Xin cảm ơn và hẹn gặp lại. địa chỉ mail là: viva23901@yahoo.com

ThanhPhuc
18-02-2006, 02:36 PM
Mình có sơ đồ mạch Test cổng com dùng Pic16F876a giúp các bạn kiểm tra chương trình

linhnc308
19-02-2006, 02:40 AM
Về cái giao tiếp này tôi cũng đã làm khá nhiều mạch, ,phần mềm thì viết bằng VB thôi. Nói chưng khá hay. Nhân đây, có bác nào đã làm mạch đo nhiệt độ dùng PIC và gửi dữ liệu lên máy tính chưa. Và dữ liệu đó sẽ được đưa vào một đồ thị, vẽ thanh dạng biểu đồ theo thời gian. Ở nhà tôi đã làm cái mạch đo rồi, nhưng còn khoản ghi dạng đồ thị thì chưa,ở nhà cũng có cái code mẫu họ dùng VB trông khá đơn giản,đồ thị chạy đẹp,khá ổn. Tôi thấy cái này khá hay. ta có thể lưu đồ thị đó lại,sau có thể xem lại tiến trình biến đổi nhiệt..v.v...

Noname0
19-02-2006, 12:35 PM
Sao cái file pdf này download về ko mở xem được hả bác?
http://www.picvietnam.com/download/TUT01.03.PVN.NOHB.100106.pdf
Kiểm tra em với!!!!!!!!!!!!!!!!!!!!(Em dùng Foxit Reader)

falleaf
19-02-2006, 01:05 PM
http://www.picvietnam.com/download/Tutorial/TUT01.03.PVN.NOHB.100106.pdf

Bạn chép cái link sai rồi, nên dowwnload không được là phải. hihii...

Tôi mở lên bình thường.

chúc vui.

ngohaibac
19-02-2006, 01:12 PM
Sao cái file pdf này download về ko mở xem được hả bác?
http://www.picvietnam.com/download/TUT01.03.PVN.NOHB.100106.pdf
Kiểm tra em với!!!!!!!!!!!!!!!!!!!!(Em dùng Foxit Reader)

Cái link này download bình thường. Đây là dạng file .pdf bạn có thể mở bằng phần mềm Adobe Acrobat (bản Pro mới nhất là 7.0) hoặc là bản Acrobat Reader 7.0 (free).

Đây là link down bản Acrobat Reader 7.0: http://www.adobe.com/products/acrobat/readstep2.html

Bạn kích vào chữ download thì sẽ down được trình cài đặt này về.

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

thuanpv
03-03-2006, 10:12 AM
Mình có dùng chương trình của bạn ngohaibac de giao tiep cong COM. Khi noi hai chan 2 va 3 của cổng COM để chạy thì ok,, nhưng khi mình đưa một mạch cụ thể (một KIT khá xịn) vào thì việc truyền nhận không chính xác, ví dụ chỉ có thể truyền và nhận đúng với các số 1,3 và hỏng các số còn lại, mình đoán là do sự khác biệt giữa unicode và ASCII, nhưng mình vẫn chưa fix được, các bạn thử cùng mình xem.

hiephv
03-03-2006, 11:47 AM
cac ban cho to hoi sao chi thay giao tiep qua cong com ma khong thay co giao tiep qua cong may in
to dang muon lam chuong trinh giao tiep qua cong may in ban nao co chuong trinh post len cho anh em tham khao nhe

rmitoday
03-03-2006, 01:30 PM
Các bác có thể tham khảo MFC class cho serial tại http://www.codeproject.com/system/cserialport.asp (em dùng cái này cho nhiều project chạy rất OK) hoặc browse http://www.codeproject.com/system/ để xem các bài viết về lập trình cho serial

ngohaibac
03-03-2006, 02:53 PM
Mình sẽ xem lại vấn đề lỗi này. Lỗi này có thể là do nguyên nhân tôi dùng mode truyền là kiểu text.

Thực tế, tôi cũng nghiên cứu chuyển sang mode truyền binary nhưng đang gặp một chút vướng mắc về chuyển đổi kiểu dữ liệu.

Để tôi nghiên cứu các lớp của bọn nước ngoài đó, rồi áp dụng vào cho mình chắc thành công hơn. Và có thể tìm ra đáp án ở các lớp này.

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

mechatronic
04-03-2006, 12:30 AM
Mình tìm được thư viện io.dll, lập trình trên các cổng cực dễ. Bởi vì mình ko thích dùng mscomm (nói chung là ko thích dùng sp của microsoft), nên dùng cái này, hơn nữa nó đơn giản và dễ hiểu hơn, tương thích winxp hoàn toàn (so với các thư viện khác chỉ có win98 là cùng).
Các bạn có thể vào đây để tham khảo:
http://www.geekhideout.com/iodll.shtml

ntc
05-03-2006, 01:04 PM
Không biết mói người có bị giống mình không, nhưng khi test thì thấy như thế này:
Các kí tự khác thì truyền nhận bình thường, riêng kí tự "t" và "T" thì nó chỉ hiện dấu "?".
Các số khác cũng nhận được, nhưng hình như số "1" và số "4" thì cũng chuyển thành dấu "?".
:D :D

hanhluckyly
06-03-2006, 05:12 PM
Can on Bac ngohaibac da cho xai thu chuong trinh cua Bac, toi co down ve va xai thu truyen nhan qua cong Com cua Bac cho con PIC6F877 va PIC 18F458 toi thay no co cac van de sau:
- chay xong bi loi o cong Com toi phai khoi dong lai may no moi chay dung lai duoc(toi thu no voi chuong trinh khac viet bang VB bao dam chuong trinh nay chay dung)
- co mot so string va so truyen ve khong dung neu cho PIC truyen ve 3 so (toi cho truyen ve la 111) thi no hien ra la ??1 (bao dam baud toi thiet lap la dung)

ngohaibac
06-03-2006, 06:49 PM
hic hic. Lỗi thế này thì khéo phải làm lại cái khác thôi. Thằng MSCOMM không đáng tin gì cả.

Tôi sẽ nghĩ cách khác các bạn ạ. Đợt này đang bận. Các bạn cứ dùng tạm cái chương trình viết bằng VB bên dientuvietnam.net đã.

http://luckytoki.com/haibac/download/Visual%20Basic/SerialPort.rar

Chương trình này bạn nhấn kí tự nào trên bàn phím thì nó sẽ truyền đi. Hơi đơn giản các bạn cải tiến thêm nha.

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

hanhluckyly
10-03-2006, 07:58 AM
khong co dau Bac cai thang MSCOMM du doi lam do! toi thay co nhieu chuong trinh viet bang ngon ngu khac su dung MSCOMM hieu qua lam that tiec la toi khong the upload len duoc cho Bac tham khao, toi co thu viet bang VC++ nhung no khong chay cung chang biet lam sao nua nay Bac lam duoc den day la tuyet voi lam roi, Bac hay co len rang tim cho sai di chang le VC++ khong the giao tiep bang cong COM duoc sao vo ly qua. Dang cho tin cua Bac:D

ngohaibac
11-03-2006, 09:41 PM
khong co dau Bac cai thang MSCOMM du doi lam do! toi thay co nhieu chuong trinh viet bang ngon ngu khac su dung MSCOMM hieu qua lam that tiec la toi khong the upload len duoc cho Bac tham khao, toi co thu viet bang VC++ nhung no khong chay cung chang biet lam sao nua nay Bac lam duoc den day la tuyet voi lam roi, Bac hay co len rang tim cho sai di chang le VC++ khong the giao tiep bang cong COM duoc sao vo ly qua. Dang cho tin cua Bac:D

Ngôn ngữ khác dùng MSCOM như VB thì mình viết rồi bạn ạ. Riêng với VC++ thì mình chỉ gặp lỗi đó thôi.

VC++ tất nhiên có thể giao tiếp cổng COM ngon lành mà. Bọn nước ngoài nó viết các lớp riêng để sử dụng. Để rảnh đã tôi sẽ nghiên cứu lại các lớp của bọn nó xem bọn chúng dùng chuyển đổi kiểu dữ liệu thế nào.

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

ngohaibac
09-04-2006, 05:36 PM
Xin đưa cho các bạn một chương trình của bọn nước ngoài viết cực hay luôn:

Đây là giao diện:
http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/PVN_00033.gif

File chương trình:
http://luckytoki.com/haibac/download/Visual%20C/Terminal.zip

Chương trình rất dễ dàng sử dụng. Có cực nhiều chức năng là mục đích mà mình đang muốn viết như vậy.

Các bạn cứ tạm dùng cái này. Chương trình rất là hay.

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

mechatronic
21-04-2006, 01:44 AM
Thanks. Chương trình terminal rất hay.
Mình đang viết chương trình giao tiếp để điều khiển servo qua COM, chỉ dùng api có sẵn (mở cổng COM như 1 file và giao tiếp như qua 1 file). Khi nào nộp bài xong và bổ sung thêm cho đầy đủ (bởi vì mình rút gọn lại chỉ dùng để điều khiển theo yêu cầu của thầy), mình hy vọnng có thể đưa lên đây cho mọi người góp ý.
Chúc vui. :)

mechatronic
24-04-2006, 01:53 AM
To NgoHaiBac: khi mình test chương trình của mình viết bằng api, mình thử nối tắt 2 và 3 lại nhưng nó ko nhận được gì cả. Mình dùng chương trình terminal bạn đưa, nó cũng ko nhận, mình có viết một chương trình khác bằng delphi, dùng TComPort class, nó cũng ko receive được. Cuối cùng, mình gắn 1 cái modem vào, thì nhận tuốt. Thế là thế nào nhỉ.:confused:
Đây là project đầu tiên dính đến giao tiếp qua máy tính của mình, nên có 1 số cái ko hiểu, nhờ anh em chỉ hộ.:D

fight
19-05-2006, 01:32 AM
tại sao tôi dùng chương trinh của bác NgoHaiBac thì bị lỗi(thông báo lỗi trên khung cửa sổ windown) hoặc không truyền được nhỉ.Ai biết trả lời giúp

ngohaibac
19-05-2006, 11:01 AM
tại sao tôi dùng chương trinh của bác NgoHaiBac thì bị lỗi(thông báo lỗi trên khung cửa sổ windown) hoặc không truyền được nhỉ.Ai biết trả lời giúp
Xin bạn cho biết lỗi cụ thể của chương trình mà mình đã up lên.

Bạn đã kiểm tra các chương trình khác xem có sử dụng cổng COM chưa. Bạn phải set đúng cổng mà bạn dùng bằng cách sử dụng Hardware manage để xem trong PC của mình có những cổng COM nào và bạn dùng giao tiếp với cổng nào.

Bạn chú ý, nếu một chương trình khác đang mở cổng COM để giao tiếp thì bạn không thể dùng chương trình khác với lệnh mở cổng lần nữa. Ví dụ bạn đang mở cổng COM1 để giao tiếp USART thì bạn không thể nạp Bootloader bằng cổng này mà bạn phải đóng cổng này lại bằng cách ấn vào nút Disconnect

Đầu tiên khi muốn giao tiếp USART, bạn chọn cổng, chọn tần số Baud, các bit chắn, lẻ, ... rồi ấn nút Connect để giao tiếp.

Chương trình Terminal bọn nước ngoài viết chạy hơi bị đỉnh. Mình đã sử dụng cái này và thấy k có lỗi gì cả.

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

ngohaibac
09-06-2006, 11:50 AM
Có một số người bạn của tôi đã test chương trình ban đầu của tôi viết bằng VC++ trên nền VĐK 8051 thì thấy là truyền nhận là không có vấn đề gì cả với thạch anh 11.0592 MHZ.

Nên các bạn ai làm thêm về 8051 test lại chương trình và thông báo kết quả cho tôi nha.

Còn về chương trình viết với PIC sẽ xem lại xem vấn đề nằm ở đâu. Tôi đã xem và thấy rằng vấn đề không phải là mode truyền, vì bản thân dùng với Visual Basic với mode truyền đó không có vấn đề gì. Mong rằng vấn đề này tôi sẽ giải quyết nhanh trong thời gian sớm nhất :D.

Máy đang bị chết con CPU, đang bảo hành nên đang mượn máy khác dùng, chán quá. quả này mà die con CPU có mà bán nhà đi mà mua mất:D.

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

hanhluckyly
09-06-2006, 01:45 PM
chào bạn Ngo Hai Bac minh có 1 số góp ý với chương trình của bạn :
-Trong quá trình truyền của bạn hình như bạn chưa kết thúc truyền bằng ký tự 13 nên nó bị sai
-Trong sự kiện oncomm bạn nên có dòng UpdateData(true) ở dòng đầu tiên.
- Nếu trong quá trình PIC nhận bạn dùng lệnh getc() thì không cần kí tự 13 nhưng mà chỉ nhận được có 1 số à ban mà truyền số có 2 chữ số là treo PIC.
-Nếu trong quá trình PIC nhận bạn dùng lệnh gets(nhan) thì bắt buộc bạn phải kết thúc truyền bằng ký tự 13 nếu không là treo PIC.

Mong bạn sớm hoàn thành chương trình vì nó rất hay.

falleaf
09-06-2006, 02:42 PM
Anh đã bỏ phần flash trong chữ ký của NHB đi rồi, vì lý do cái flash sẽ làm mọi người load trang web khá nặng. Chúc vui

ngohaibac
24-06-2006, 02:11 AM
Tôi upload file chương trình .exe của chương trình trong bộ MSDN để mọi người tham khảo.Tại đang dùng mạng theo dung lượng nên chưa upload hình minh hoạ lên cho các bạn được. Mình đang tiếp tục nghiên cứu để sớm đưa ra sản phẩm mới. Mình mới thi xong nên tập trung được hơn.

Chương trình tôi đã thử và chạy cực kì ngon lành. Khi bạn nhấn phím nào thì nó sẽ truyền luôn xuống cổng COM. Các dữ liệu nhận được sẽ hiển thị trên của sổ trắng.

Gửi Chính: cậu thử cái này xem giao tiếp với PIC thế nào nhé. Mình thử với dòng khác rùi.

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

bachelor1979
24-06-2006, 01:46 PM
Bạn NHB có thể upload mã nguồn của chương trình giao tiếp RS232 bằng API được không ?
Thân !!!

ngohaibac
24-06-2006, 10:30 PM
Bạn NHB có thể upload mã nguồn của chương trình giao tiếp RS232 bằng API được không ?
Thân !!!
Mình upload source code cho các bạn đây. Bạn nào nghiên cứu nhanh hơn thì xin mời viết thành bộ code hay ho sử dụng các hàm do bọn Microsoft viết nhé.

Mình mới chỉ đọc qua mã nguồn và thấy rằng nó cực hay, sử dụng hầu hết các API để làm, không dùng các OCX tẹo nào cả. Khi các bạn đọc code nên kết hợp với tra hàm trong MSDN (bản 7 - 2001).

chúc thành công.

bachelor1979
24-06-2006, 10:46 PM
Mình upload source code cho các bạn đây. Bạn nào nghiên cứu nhanh hơn thì xin mời viết thành bộ code hay ho sử dụng các hàm do bọn Microsoft viết nhé.

Mình mới chỉ đọc qua mã nguồn và thấy rằng nó cực hay, sử dụng hầu hết các API để làm, không dùng các OCX tẹo nào cả. Khi các bạn đọc code nên kết hợp với tra hàm trong MSDN (bản 7 - 2001).

chúc thành công.
Thanks NHB !
trước đây tôi đã dùng nhiều cách để giao tiếp với COM (bằng delphi, bằng LabVIEW ,....) nhưng thực sự ko khoái , viết bằng API vẫn hay hơn vì nó là của mình !!!!
Thân !

namqn
03-07-2006, 08:15 PM
TTY.exe của Bắc gửi lên khi chạy trên máy của anh có lỗi, chưa thử với vi điều khiển nhưng giao diện của chương trình đã có 2 lỗi (xem hình gửi kèm).

Anh gửi kèm MTTTY.exe của Allen Denver (cũng của Microsoft), viết vào năm 1995, source code được cung cấp trong phần "Serial Communications in Win32" của MSDN (online). Nếu ai không lấy được source code thì có thể download từ file 4918.exe được gửi kèm.

Thân,

ngohaibac
04-07-2006, 09:01 AM
Gửi anh Nam: chương trình đó chạy không có lỗi đâu anh ạ. 2 cái giao diện đó không phải là lỗi mà là 2 dialog: Setting và about của nó. Anh có thể lấy mã nguồn của nó ở trên để dịch lại xem ạ. Em đã test nó rùi và chạy ngon lành.

Cảm ơn anh đã cung cấp thêm một mã nguồn mới nữa. Em đang dùng lớp CSerialCom của codegunu.com. Mã nguồn viết bằng API, và tác giả công bố Public, chương trình viết không lớn và không có kiểm soát lỗi. Em đang dựa vào lớp này. Có thể sẽ phải bổ sung thêm vài hàm cho lớp đó trên cơ sở tham khảo các chương trình khác.

Em đã viết được truyền dữ liệu đi, một mảng kí tự rùi. Do tốc độ xử lý của vi điều khiển thấp nên mỗi lần truyền một character em delay 2ms. Anh thấy có ổn không ạ. Nếu tiến trình thuận lợi, đến cuối tuần này có lẽ em viết tạm ổn anh ạ.

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

namqn
04-07-2006, 05:45 PM
Gửi Bắc: thời gian delay tùy thuộc vào tốc độ baud, và khả năng nhận dữ liệu của vi điều khiển. Chẳng hạn, dsPIC có bộ đệm nhận 4 ký tự (không kể thanh ghi dịch), do đó truyền liên tiếp 5 ký tự vẫn không gây ra tràn bộ đệm. Về tốc độ baud, với 9600 bps thì mỗi ký tự cần khoảng 1 ms để truyền, nhưng với 38400 bps chẳng hạn, thì thời gian đó chỉ còn khoảng 250 us.

Do vậy, chương trình giao diện nên cho phép điều chỉnh số ký tự được truyền liên tiếp, và thời gian delay giữa các loạt ký tự, như vậy sẽ linh hoạt hơn.

Chúc em thành công!

Anh quên chưa nói đến phần lỗi của TTY.exe. Trong hai cái dialog đó có lỗi hiển thị, cái thứ nhất có title hiển thị sai, cái thứ hai không hiển thị được thông tin hệ thống. Những lỗi này không ảnh hưởng đến việc truyền nhận dữ liệu, nhưng phần mềm đã được thử nghiệm mà còn những lỗi này thì khó thuyết phục người dùng.

Thân,

ngohaibac
11-07-2006, 10:34 PM
Xin gửi mọi người test hộ 2 chương trình sau.

Một chương trình dựa vào lớp CSerialComm. Chương trình này chưa được hoàn chỉnh trong nhận dữ liệu vì mình phải dùng hàm WaitCommEvent để nhận sự kiện. Mình đã tham khảo nhiều nhưng chưa viết xong được làm theo cac Thread.

Chương trình thứ 2 dựa vào Project của bọn nước ngoài ở đây đối tượng làm bộ đệm nên hoạt động tương đối chính xác. Mong các bạn cho biết ý kiến.

Quả này đang tìm nhà ở, mệt quá. Mong các bạn ở HN, có bạn nào biết có nhà cho thuê ở khu Minh Khai hoặc giữa BKHN và ĐH Dược giá khoảng 400k rộng một chút vì nhiều đồ, hơi thích riêng tư tí vì cần yên tĩnh( điện nước an ninh tốt) thì thông báo cho bọn mình với nhé. Nếu mà không tìm được nhà cửa hẳn hoi thì toàn suy nghĩ nhà cửa thôi mệt lắm làm sao mà viết được cái gì nữa. Mệt lắm, 2 hôm nay tìm nhà mãi. Mong anh em hảo tâm có chỗ nào ổn ổn giới thiệu cho mình. Làm ơn nhắn tin vào số máy của mình 0955 770725. Phải chăng là yêu cầu cao quá chăng. Hic hic mệt thật.

Mình chưa chụp hình nên chỉ upload file mong các bạn xem test với PIC xem nhé.

Không hiểu sao cứ login vào lại bị out liên tục,không upload file được.

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

ngohaibac
14-07-2006, 09:49 AM
Mình xin gửi các bạn các linh đến 2 project mà mình mới upload:

- Chương trình đầu tiên PJ2_API:
http://picvietnam.com/ngohaibac/My%20Projects/VC++_Proejcts/RS232/PJ2_API.exe


- Chương trình giao tiếp thứ 2:

http://picvietnam.com/ngohaibac/My%20Projects/VC++_Proejcts/RS232/SerialComm.exe

Gửi Chính: cậu test hộ tớ các phần mềm này với PIC nhé, có gì hỏi tớ nhé.

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

kiethnt
24-09-2006, 03:54 PM
Xin chan thanh cam on bai viet cua ban Bac, hien nay toi chi moi hoc Visual C++ nhung do de tai tot nghiep doi hoi toi phai viet 1 giao dien de truyen so lieu tu PC1 den PC2 bang RS232 standard. De toi mo ta so luoc ve de tai cua toi:
Toi dang dung 1 chuong trinh xu ly anh ten la Digiclops application programming interface tren PC1. Do do de chuyen cac thong so cua anh tu chuong trinh nay vao giao dien vua tao boi VS C++ sau do gui den mot PC khac. Xin ban chi giup toi phai lap trinh nhu the nao.
Toi da download chuong trinh cua ban tu forum nhung khong co file exe xin ban hay gui day du dum qua email: kiethnt@yahoo.com. Hoac ban hay sua chuong trinh that don gian nhat de toi co the tiep tuc lap trinh them cho phu hop voi yeu cau cua de tai
Chan thanh cam on su giup do cua ban

kiethnt
28-09-2006, 12:29 AM
Ban Bac co quyen sach Serial port complete programming dang Pdf khong pỏt len dum minh dang rat can hoc de lam de tai

ntc
28-09-2006, 11:17 PM
Đây nè.

http://rapidshare.de/files/23579994/Serial_Port_Complete_by_Jan_Axelson.pdf

:)

Bạn vào địa chỉ này, nhấn vào cái nút "FREE", sau đó đọc kĩ các thông báo ở các trang tiếp theo và làm theo là được. Nó kêu đợi thì phải chịu khó đợi.

Hehe, sinh viên bắt đầu vào mùa làm đề tài rồi đây. Mình cũng thế.

chumeodihia
29-09-2006, 11:55 PM
hi hi chào các đại ca trong diễn đàn.Có chương trình viết bằng vb giao tiếp PC qua rs232.Post cho em học hỏi.Cám ơn nhiều

ngohaibac
19-10-2006, 03:50 PM
Chào các bạn, đây là chương trình giao tiếp RS232 trên PC viết bằng VC++ dùng multithread. Chương trình nhận dữ liệu rất hiệu quả khi mình đấu chéo 2 chân 2 và 3 của cổng COM.

Các bạn dùng test thử chương trình này và cho ý kiến nhé.

Đây là giao diện chương trình và chương trình:
http://picvietnam.com/ngohaibac//My%20Projects/VC++_Proejcts/RS232/SerialComm.exe

http://picvietnam.com/ngohaibac//My%20Projects/VC++_Proejcts/RS232/PVN_0025.gif

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


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

ngohaibac
19-10-2006, 03:52 PM
hi hi chào các đại ca trong diễn đàn.Có chương trình viết bằng vb giao tiếp PC qua rs232.Post cho em học hỏi.Cám ơn nhiều

Chương trình viết bằng VB thì rất đơn giản, đã có nhiều ví dụ trên dientuvietnam.net rùi bạn ạ. Mong bạn xem kĩ lại nhé.

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

ngohaibac
28-10-2006, 05:56 PM
http://www.picvietnam.com/ngohaibac/My%20Projects/VC++_Proejcts/RS232/RS232_Source%20code.zip

File chương trình trên khi chạy trên máy không cài VC++ có lỗi, các bạn download sourcode về dịch lại và chạy trên máy của mình nhé. Và cho mình kết quả test của chương trình này.

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

hackthanh
02-11-2006, 11:20 PM
Bạn ơi cho mình hỏi thêm một chức năng đó là TRUYỀN NHẬN FILE bằng ACTIVE X viết bằng VC++ nha. Bạn Ngô Hải Bắc hãy giúp anh em mở rộng thêm kiến thức. Trả lời sớm nha. Thank u

minhcuong
03-11-2006, 11:40 AM
Vào CodeProject có thư viện của Raymon De Klein viết rất tốt. Chạy chế độ nonblocking, multi-thread. Mình đã dùng thư viện này, chuyển 125200bps thoải mãi, vẽ đồ thị, xử lý đọc ghi database cùng một lúc ngon lành, host PC không treo cứng đơ như kiểu blocking.

Bạn nên tìm hiểu thêm source code MTTY của một programmer tại Microsoft viết cho RS232 rất hay.

hackthanh
06-11-2006, 10:45 PM
Mình vào rồi có thấy gì đâu bạn ơi. Bạn nói rõ hơn về việc truyền nhận FILE được ko? Đang cần gấp, Thank u

ngohaibac
08-11-2006, 04:20 PM
Vào CodeProject có thư viện của Raymon De Klein viết rất tốt. Chạy chế độ nonblocking, multi-thread. Mình đã dùng thư viện này, chuyển 125200bps thoải mãi, vẽ đồ thị, xử lý đọc ghi database cùng một lúc ngon lành, host PC không treo cứng đơ như kiểu blocking.

Bạn nên tìm hiểu thêm source code MTTY của một programmer tại Microsoft viết cho RS232 rất hay.

Vào CodeProject có thư viện của Raymon De Klein viết rất tốt. Chạy chế độ nonblocking, multi-thread. Mình đã dùng thư viện này, chuyển 125200bps thoải mãi, vẽ đồ thị, xử lý đọc ghi database cùng một lúc ngon lành, host PC không treo cứng đơ như kiểu blocking.

Bạn nên tìm hiểu thêm source code MTTY của một programmer tại Microsoft viết cho RS232 rất hay.

Mình biết source code MTTY của Microsoft. chương trình này viết theo project kiểu Win32, chứ không phải là MFC. Chương trình này cũng viết theo kiểu multithread bạn ạ.

Mình đã nghiên cứu chương trình này rùi. Nó dùng một thread chuyên chờ dữ liệu vào với hàm WaitCommEvent.

Cảm ơn các bạn đã tham gia góp ý. Mình sẽ cố gắng để hoàn thiện chương trình hơn nữa và giải đáp thắc mắc của các bạn.

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

manhct703
08-11-2006, 07:07 PM
Các bác em là thành viên mới mà em đang phải làm ghép nối máy tính đề tài
"viết chương trình xuất dữ liệu ra máy in qua cổng LPT" Bác nào biết giúp em với ngôn ngữ gì cũng được (Nếu ViusualBasic thì càng tốt) Cảm ơn trước nha
ních em là manhct703@yahoo.com

minhcuong
08-11-2006, 07:33 PM
Gửi tặng các bạn phần mềm COMMASTER để giao tiếp cổng COM, đơn giản hơn HyperTerminal rất nhiều.

File exe tôi đổi thành zip, các bạn đổi lại rồi dùng.

Lưu ý: đã quét virus.

luanktd
08-11-2006, 08:13 PM
mình cũg dã viết thử giao tiếp giữa vi điều khiển với máy tính thông qua cong 232, nhưng lại viết trên Visual basic , kết quả cũg tương tự .Trong visual cũg hỗ trợ Mscomm , giống hệt như C++

pham_dinh_hung83
10-11-2006, 12:02 AM
Các Bác ơi, Cho Em Hoi
Nếu Mình Lập Trình Com ảo, Usb To Com ấy Mà, Sau Khi Cài Driver Cho Cáp Nó Cho 1 Cổng Com Mới,
Vậy Lập Trình Cho Nó Có Khác Com Thường Ko Nhỉ
Các Bác Giúp Nhe

ngohaibac
13-11-2006, 11:38 AM
Đây là tài liệu Serial_Complete của Jan Axelson, (38.5MB)
http://www.tailieuvietnam.net/download/upload/ngohaibac/Jan%20Axelson%20-%20Serial%20Port%20Complete.pdf

Mọi người down về để lấy làm tài liệu cho mình nhé.

tranhuyky
14-11-2006, 10:42 PM
Link terminal.zip chết queo rồi các bác ạ


Xin đưa cho các bạn một chương trình của bọn nước ngoài viết cực hay luôn:

Đây là giao diện:
http://i36.photobucket.com/albums/e46/ngohaibac/Serial%20Port/PVN_00033.gif

File chương trình:
http://luckytoki.com/haibac/download/Visual%20C/Terminal.zip

Chương trình rất dễ dàng sử dụng. Có cực nhiều chức năng là mục đích mà mình đang muốn viết như vậy.

Các bạn cứ tạm dùng cái này. Chương trình rất là hay.

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

namqn
05-01-2007, 09:55 PM
Anh Bac chi em link de download Visual c++ voi...Em search hoai ma chua duoc.
Cam on Anh nhiều
Ở VN thì vào các cửa hàng bán đĩa CD mà mua, tìm trên mạng ít có lắm, vì bây giờ Microsoft cho không các phiên bản Express mới nhất mà. Link cho Visual C++ 2005, Express Edition dưới đây:

http://msdn.microsoft.com/vstudio/express/visualc/

Thân,

ngohaibac
05-01-2007, 11:34 PM
Link của TUT của mình đây bạn ạ:

http://www.tailieuvietnam.net/download/upload/ngohaibac/TUT01.03.PVN.NOHB.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//attachment.php?attachmentid=90&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
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
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
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,

vdt
31-03-2007, 11:36 PM
Có ai lập trình điều khiển bằng Delphi không? Do lịch sử để lại, thời mình đi học chỉ đựoc dạy Pascal, thế nên sau này cũng vẫn theo con đường cũ mà dùng Delphi.
Mình thấy viết chương trình điều khiển bằng VB thì đơn giản thật, nhưng khi dân kỹ thuật dùng thì vẫn thấy thế nào ấy. Dùng VC thì là Pro nhất, nhưng với mình thì sẽ mất rất nhiều thời gian để học. Thế nên mình phải sử dụng Delphi.
Hiện mình có một số thư viện để viết cho cổng RS232 bằng Delphi, đây cũng là những thư viện free và mình download trên net cả thôi, nhưng mình thấy dùng khá ổn định và dễ dàng. Mình xin đóng góp lên đây để mọi ngừoi tham khảo nhé.
Chúc mọi người vui vẻ :) :) :)

hoangthongd
14-04-2007, 08:50 PM
chao cac bac!
em chi moi tap tanh ve VC++ va dung MScomm de giao tiep voi vdk 89s52.
truyen du lieu thi ca hai ben dieu nhan duoc. khi truyen kieu CString thi du lieu truyen khong co sai sot. tuy nhien, em muon truyen theo kieu so, chang han nhu truyen con so nguyen 234 thi lai truyen sai het ca ben vdk va PC.
em thay cac bac kha ranh ve van de nay nen xin cac bac giup em voi
dieu nay rat can thiet cho em vi em dang lam de tai mon hoc.
xin bac nao biet giup em voi

hoangtham
16-04-2007, 11:22 AM
Mình có 1 mạch điều khiển động cơ DC sd VDK có giao tiếp với máy tính qua cổng COM.Dữ liệu về tốc độ được đọc về từ encoder. Giờ muốn lưu lại vào 1 file để chuyển thành đồ thị thì làm thế nào? có cao thủ nào giúp mình với.Mình dùng visual C++ để lập trình

ngohaibac
17-04-2007, 09:06 PM
Thám à,

Cậu xem về đọc ghi file trong VC++ nhé, mở MSDN ra mà xem. Thư viện với VC++ là fstream.h.

Còn việc hiển thị dữ liệu lên figure thì tìm component của VC++ ấy. Mình tìm cho sau nhé.

Chúc mày ok :D.

Attiny
01-05-2007, 11:16 PM
Sao em down cai link http://luckytoki.com/haibac/download...C/Terminal.zip

chương trình TERMINAL

của anh HẢI BẮC ko dược nhỉ nhờ các bác chi ZUM THANK!

ngohaibac
01-05-2007, 11:53 PM
Chương trình Terminal đây, các bạn download về nhà dùng nhé.

Chúc anh em luôn luôn ok :D.

signin
21-06-2007, 09:30 PM
Chương trình nhận dữ liệu từ máy tính của vi điều khiển

org 000h

; khoi tao UART
; Thiet lap SMOD = 1, nghia la chia cho 16
mov a,87h ; 87h chinh la dia chi cua thanh ghi PCON
setb ACC.7 ; SMOD =1, nghia la chia cho 32
mov 87h,a

mov SCON,#01010010b
; SM0_SM1_SM2_REN_TB8_RB8_TI_RI
; 0 1 0 1 0 0 1 0
; UART 8 bit , cho phep nhan ki tu, set co ngat phat

mov TMOD,#00100000b
; GATE_C/T_M1_M0_GATE_C/T_M1_M0
; 0 0 1 0 0 0 0 0
; Timer 1, mode 2 ( auto load )
mov TH1,#-3 ; toc do thuc 19200 baud
setb TR1 ; cho phep timer hoat dong

td: mov r0,#40h ; vi tri o nho bat dau luu

td1: jnb RI,$
clr RI
mov @r0,SBUF
inc r0
jmp td1


end



Chương trình gởi dữ liệu từ máy tính tới vi điều khiển:


Private Sub Form_Load()

RX_Counter = 0
' init for comport

With MSComm1
.CommPort = 2 'chose COM2
.Settings = "19200,N,8,1" 'baud 9600bps, none parity, 8 bit data, 1 bit stop
.InBufferSize = 1024
.InputLen = 0
.RThreshold = 1
.SThreshold = 1
.OutBufferSize = 512
.InputMode = comInputModeBinary
'.InputMode = comInputModeText
.PortOpen = True
End With

'init for edit boxes
For i = 0 To 10
Text1.Item(i).Text = i
Text1.Item(i).Alignment = 2
Next

End Sub

Private Sub cmdSend_Click()

Dim BytesToSend(10) As Byte

'Store the data in a byte array
For i = 0 To 10
BytesToSend(i) = Val("&h" & Text1.Item(i).Text)
Next

'Send the data to the port
MSComm1.Output = BytesToSend()

End Sub



Em có download chương trình Giao tiếp RS232 trên PC bằng Visual Basic ( do anh Hải Bắc viết ) về dùng!


Em truyền dữ liệu từ vi điều khiển 89S52 lên máy tính thì nhận đúng nhưng gởi dữ liệu từ máy tính xuống vi điều khiển thì vi điều khiển không nhận được!

Kính mong anh Hải Bắc xem dùm source code của Visual Basic, vi điều khiển của em viết đúng không? Nhờ anh Hải Bắc chỉ giúp!

Hiện nay em đang làm đồ án tốt nghiệp nhưng gặp sự cố ở khâu truyền dữ liệu từ máy tính xuống vi điều khiển.

Em hiện đang học ngành cơ khí.

@ngohaibac: em nhớ để code giữa 2 tag code nhé. Cho người đọc dễ nhìn em ạ.

master_boot
21-06-2007, 10:44 PM
Anh ơi anh có thể cho em code của trương trình không?em đang làm đề tài cơ sở về "viết chương trình đường truyền file giữa 2 máy tính bằng ngôn ngữ C" em muốn tham khảo thêm anh giup em trong thời gian ngắn nhất nhé em mới vào nghề mà nếu được anh mail vào hòm thư: virus_batdiet_k5d@yahoo.com cảm ơn anh nhiều

ngohaibac
22-06-2007, 04:26 PM
Source code ngay trong file đính kèm của bài 1 mà bạn:
http://www.picvietnam.com/forum//showpost.php?p=1347&postcount=1

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

ngohaibac
22-06-2007, 04:38 PM
Chương trình nhận dữ liệu từ máy tính của vi điều khiển
.................................................. .........

1. Về chương trình truyền trên PC em không có hàm ngắt OnComm à ?Thế thì làm sao xử lý được dữ liệu truyền lên nhỉ ?

SThreshold = 0 để không xảy ra sự kiện ngắt truyền. RThreshold = 1 là khi có 1 byte trong bộ đệm nhận thì sẽ xảy ra sự kiện nhận dữ liệu.

2. Còn chương trình ở VĐK làm sao em biết là vi điều khiển nhận được hay chưa ? vì khi em nhận được dữ liệu thì chỉ có ghi dữ liệu vào trong RAM thôi mà. Em có thể test bằng cách cho một cổng nối với Led để test. Khi nhận được dữ liệu thì setb để led sáng.

Chương trình của em là hoàn toàn dùng kiểu Polling, chờ khi cờ RI = 1 thì ghi dữ liệu. Cách này không tối ưu, sao em không dùng ngắt nhỉ ? như thế sẽ làm được nhiều việc hơn.

Chương trình cũng không có đoạn lệnh gửi dữ liệu lên PC mà?

Chúc em thành công.

signin
02-07-2007, 06:33 PM
Cam on anh Hai Bac nhieu!

ngohaibac
09-07-2007, 09:13 AM
Chào các bạn.

Tài liệu Serial Port Complete ,TUT01 và các file có liên quan mình đều upload tại đây:
http://www.esnips.com/web/UARTBac

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

nofre
19-08-2007, 10:07 PM
thú vị thật đấy .
Đa tạ các đại ca đã chỉ dẫn cụ thể.

huunghia
13-09-2007, 12:17 PM
Đây nè.

http://rapidshare.de/files/23579994/Serial_Port_Complete_by_Jan_Axelson.pdf

:)

Bạn vào địa chỉ này, nhấn vào cái nút "FREE", sau đó đọc kĩ các thông báo ở các trang tiếp theo và làm theo là được. Nó kêu đợi thì phải chịu khó đợi.

Hehe, sinh viên bắt đầu vào mùa làm đề tài rồi đây. Mình cũng thế.

Link nay hinh nhu die rui
bac gui cho em nhe huunghiaonline@gmail.com
cam on bac nhieu

dung424
13-09-2007, 06:28 PM
cảm ơn các bác, em là thành viên mới đang làm đề tài giao tiềp máy tính bằng VB đang trong quá trình tự nghiên cứu nên nhận được tài liệu của các bác em rất hay mong các bác post lến giúp em. cảm ơn các bác

salem_tdh1
16-01-2008, 09:31 AM
chao cac bac!
em chi moi tap tanh ve VC++ va dung MScomm de giao tiep voi vdk 89s52.
truyen du lieu thi ca hai ben dieu nhan duoc. khi truyen kieu CString thi du lieu truyen khong co sai sot. tuy nhien, em muon truyen theo kieu so, chang han nhu truyen con so nguyen 234 thi lai truyen sai het ca ben vdk va PC.
em thay cac bac kha ranh ve van de nay nen xin cac bac giup em voi
dieu nay rat can thiet cho em vi em dang lam de tai mon hoc.
xin bac nao biet giup em voi
Mình chạy bài của Bắc thì thấy đúng tuốt nhưng mình định áp dụng thì vấp phải vấn đề giống hoangthongd. Mình muốn truyền và nhận dữ liệu dạng số để thực hiện tính toán sau này chứ không chỉ hiển thị mà không biết làm thế nào để chuyển đổi từ dạng string sang số cả. Rất mong mọi người giúp đỡ.

thanhlam220582
24-01-2008, 03:45 PM
Mình chạy bài của Bắc thì thấy đúng tuốt nhưng mình định áp dụng thì vấp phải vấn đề giống hoangthongd. Mình muốn truyền và nhận dữ liệu dạng số để thực hiện tính toán sau này chứ không chỉ hiển thị mà không biết làm thế nào để chuyển đổi từ dạng string sang số cả. Rất mong mọi người giúp đỡ.

bạn có chạy thử bài của anh Bắc viết bằng vb ko?mình chạy ko báo lỗi gì nhưng ko nhận đc dữ liệu về.mình ko bit có sai chỗ nào ko nữa.bạn chạy thử rồi chỉ cho mình với nhé.cám ơn nhiều
ah đây là link http://www.picvietnam.com/forum/showthread.php?t=869

svn
28-01-2008, 10:37 AM
Theo mình, phần giao tiếp rs232 nếu viết trên máy tính thì có lẽ ko có gì bàn nữa :D Nếu gửi nhận string thì lại càng khỏe :)
Nhưng khi giao tiếp cần tốc độ nhanh, và gửi nhiều giá trị trong 1 lần truyền, thì ít ai truyền cả string đi cả. Thông thường là truyền kiểu binary. Khi truyền nhận giá trị binary, mình thấy nên chú ý những cái sau:
- Ở máy tính, nên bỏ chọn phần discard null character (có thể nó có tên khác) - nói chung một số công cụ chúng ta dùng có thể có chức năng bỏ qua các giá trị 0x00 này ko lưu vào buffer nhận.
- Ở VDK, khi ta lười ko nhận từng byte để xử lý mà dùng các hàm nhận cả chuỗi 1 lần rồi tách ra xử lý từng byte thì thường các hàm này trong các trình dịch cho VDK chỉ đọc đến kí tự null (0x00) là ngừng, kết thúc chuỗi đọc.
- Nên set parity cho rs232, để none lỡ có sai gì thì ... :D (mặc dù chả bao giờ mình thấy nó sai thì phải - chắc ăn cứ set)
- Nếu dùng pic, nên set luôn ERROR để khi có lỗi như tràn buffer khi nhận dc quá nhiều byte gửi đến thì nó tự reset lại, ko thì nó ngừng luôn, khỏi truyền nhận gì sất (mấy con khác mình ko biết :P ).
- Nếu muốn gửi nhận số thực (float, double) mà ko muốn phải gửi cả string 1 đống kí tự đi, có thể tham khảo cách lưu trữ số thực trên máy tính, gửi từng byte của nó đi, khi nhận về thì xử lý để nó lại trở thành số thực (tham khảo wikipedia - float number). Các tut và ex mình chưa thấy cái nào làm thế này, mà chỉ có chuyển số thực thành 1 chuỗi (123,456 => "123,456") rồi gửi cả chuỗi đi :D

falleaf
28-01-2008, 11:43 AM
- Nếu muốn gửi nhận số thực (float, double) mà ko muốn phải gửi cả string 1 đống kí tự đi, có thể tham khảo cách lưu trữ số thực trên máy tính, gửi từng byte của nó đi, khi nhận về thì xử lý để nó lại trở thành số thực (tham khảo wikipedia - float number). Các tut và ex mình chưa thấy cái nào làm thế này, mà chỉ có chuyển số thực thành 1 chuỗi (123,456 => "123,456") rồi gửi cả chuỗi đi :D

F nhớ đã có bài viết về mantissa rồi mà? Hồi một bạn làm luận văn về điều khiển mờ, F đã có cho bạn đó viết về thuật toán này rồi, các bạn thử tìm lại đâu đó trong phần thuật toán xem.

Chúc vui

littlephoc
21-02-2008, 06:30 PM
Mình viết class đảm nhận việc đọc ghi từ PC tới cổng COM bằng các win32 API : ReadFile, WriteFile.
Và đang gặp một số trục trặc sau:
- Do không biết số byte mà thiết bị gửi trả về (response message) là bao nhiêu, tùy theo câu lệnh mình gửi đi đúng hay sai, mà độ dài của response message có thể thay đổi. Cho nên làm sao để đọc hết được buffer trong thời gian ngắn nhất, nghĩa là vừa hết dữ liệu được gửi về thì ngay lập tức quay về chương trình chính để xử lý.
- Khi debug, mình để ý thấy mỗi lần đọc thì lệnh ReadFile đọc được 7 byte một và mình cứ phải quay vòng để đọc nhiều lần mới hết được. Đây có phải là do setting cho com port chưa đúng, hay là do thiết bị nó trả về theo kiểu như thế? Thiết bị thì mình cũng chưa nắm hết được vì đó là thiết bị bảo mật, cho nên không có tài liệu để tham khảo tường tận mà chỉ có được input, output.
Mục đích là mỗi lần đọc thì lệnh ReadFile sẽ đọc được hết response message, có chiều dài thay đổi trong khoảng từ 6 bytes đến 64 bytes. Không phải đọc nhiều lần mà chỉ cần đọc một lần. Để làm điều này thì cần dùng timeout hay là loop lệnh ReadFile nhiều lần ?
Xin cảm ơn.

sonvienthong
21-03-2008, 11:38 PM
Về cái giao tiếp này tôi cũng đã làm khá nhiều mạch, ,phần mềm thì viết bằng VB thôi. Nói chưng khá hay. Nhân đây, có bác nào đã làm mạch đo nhiệt độ dùng PIC và gửi dữ liệu lên máy tính chưa. Và dữ liệu đó sẽ được đưa vào một đồ thị, vẽ thanh dạng biểu đồ theo thời gian. Ở nhà tôi đã làm cái mạch đo rồi, nhưng còn khoản ghi dạng đồ thị thì chưa,ở nhà cũng có cái code mẫu họ dùng VB trông khá đơn giản,đồ thị chạy đẹp,khá ổn. Tôi thấy cái này khá hay. ta có thể lưu đồ thị đó lại,sau có thể xem lại tiến trình biến đổi nhiệt..v.v...
Mình cũng đang làm KIT đo nhiệt độ giao tiếp với COM nhưng lại truyền qua line điện thoại thông qua 2 modem/fax ở 2 đầu.Bạ có thể post cho mình phần mềm VB này đc ko? cả đoạn code đồ thị tiến trình biến đổi nhiệt độ nưa nhe. Thanks.
Mình đang làm luận văn nên rất cần nó lắm. Vả lại KIT nhiệt độ của mình vẫn chưa hoatddoognj được, xin bạn chỉ giáo

89c2051
04-04-2008, 11:22 AM
may sư huynh cho em hỏi tý nha ; em viết xong chương trình quang báo ròi ,nhưng phần load font em bó tay lun,em có chương trình LCD Font Maker 3.0 nhưng nó chỉ xuất ra bộ font dang C (0x0A,0x00,0xFF,...) hoăc ASM ( 0aH,00h,ffh,...) vậy làm sao load nó mà truyền ra cổng com bay giờ đây !

hochoi2006
10-04-2008, 09:53 AM
Có ai lập trình điều khiển bằng Delphi không? Do lịch sử để lại, thời mình đi học chỉ đựoc dạy Pascal, thế nên sau này cũng vẫn theo con đường cũ mà dùng Delphi.
Mình thấy viết chương trình điều khiển bằng VB thì đơn giản thật, nhưng khi dân kỹ thuật dùng thì vẫn thấy thế nào ấy. Dùng VC thì là Pro nhất, nhưng với mình thì sẽ mất rất nhiều thời gian để học. Thế nên mình phải sử dụng Delphi.
Hiện mình có một số thư viện để viết cho cổng RS232 bằng Delphi, đây cũng là những thư viện free và mình download trên net cả thôi, nhưng mình thấy dùng khá ổn định và dễ dàng. Mình xin đóng góp lên đây để mọi ngừoi tham khảo nhé.
Chúc mọi người vui vẻ :) :) :)


Thank! Thank! Thank!

vuhuuthang
15-04-2008, 12:47 AM
Chào các bạn tôi xin đưa cho các bạn chương trình mẫu để giao tiếp với RS232 trên PC. Chương trình này tôi viết bằng Visual C++ trong bộ Microsoft Studio 6.0 của Microsoft, các bạn dịch lại ra file .exe để chạy. Phần hướng dẫn chi tiêt tôi sẽ gửi sau khi được kiểm duyệt kĩ lưỡng. Chương trình này còn đơn giản. Sẽ có nhiều phiên bản sau ra đời.

Giao diện chương trình như sau:


http://luckytoki.com/haibac/download/Visual%20C/image/RS232TUT.gif

Hình 1: Giao diện chương trình

Chương trình có chức năng sau:

- Nhập kí tự hoặc xâu kí tự vào EditBox Transfer, điều chỉnh tham số giao tiếp trên các ComboBox. Nhấn nút Send để gửi dữ liệu ra cổng COM.

- Đồng thời với nó nếu có dữ liệu truyền vê cổng Com thì dữ liệu sẽ được hiển thị lên EditBox Receive. Khi bạn nhấn vào Clear thì sẽ xoá dữ liệu hiển thị trên EditBox này

Chú ý:

Để có thể test luôn chương trình các bạn nối tắt chân 2 và chân 3 của RS232 lại với nhau chính là nối chân RxD và TxD để chúng ta truyền dữ liệu ra RS232 sau đó nhận dữ liệu luôn.


http://luckytoki.com/haibac/download/Visual%20C/image/rs232_pin.gif
Hình 2: Sơ đồ đấu chân của RS232


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

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

ngohaibac
15-04-2008, 04:33 PM
Chào anh em.

Đang tập trung làm đồ án nên hơi lơ là với anh em quá. Xin lỗi nhé. Mình sẽ chú ý chăm sóc các bạn hơn nữa.

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

ltpbkis
18-04-2008, 09:16 AM
Anh Bắc ơi.em đang làm bài tập lớn về VXL.yêu cầu của bài là:
1. nhập nhiệt độ max va min để gửi xuống cho PIC .Nhiệt độ đó là khoảng để PIC ra báo động bằng loa nêu vượt ra khỏi khoảng [max ,min]
2.nhập xong gửi dữ liệu xuống
3.nhận nhiệt độ đo từ LM 335 đo được lên để hiển thị
Tất cả nhập, nhận và truyền dữ liệu đều được viết bằng Visual Basic

Anh cho em hỏi đoạn chương trình sau em viết để truyền nhiệt độ xuống đã đúng chưa mà sao vẫn không được.

' ham de gui du lieu xuong tu PC'
'================================================= ======================='
Private Sub Gui_Click()
Dim Tmaxs As String 'kieu bien truyen la string'
Tmaxs = Tmax 'Bien chua nhiet do max de truyen'
Dim Tmins As String
Tmins = Tmin 'Bien chua nhiet do min de truyen'
If (RS232.PortOpen = True) And (RS232.CTSHolding = False) Then
'neu cong da mo va khong trong wa trinh truyen du lieu thi truyen'
RS232.Output = Tmaxs 'truyen Tmax'
RS232.Output = Tmaxs 'Truyen Tmin'
Else
RS232.PortOpen = True 'nguoc lai phai mo cong'
RS232.Output = Tmaxs
RS232.Output = Tmaxs
End If 'ket thuc kiem tra dieu khien va truyen'
End Sub

và anh cho em cái thuật toán gửi và nhận dữ liệu đi.như để gửi và nhận cần làm cái gì từng bước một kiểm tra cái gì.Truyền và nhận chuỗi ký tự số thì làm như thế nào.

ltpbkis
18-04-2008, 09:32 AM
Anh Bắc ơi ,em đã làm theo các bước trên mà vẫn không chạy được.Anh gửi cho em code mà anh viết để thực hiện chương trình cho em được không.em không hiểu làm sai ở đâu nữa mà không chạy được.em đang cần lắm ah.Cảm ơn anh!

leejongfan
04-06-2008, 01:50 PM
Hôm trước vòng vòng trên net có thấy vài trang web cũng bàn về giao tiếp COM trên PC dùng C#, post lên mọi người xem chơi :

http://www.dreamincode.net/forums/showtopic35775.htm

http://www.codeproject.com/KB/cs/serialcommunication.aspx

http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx

ngqxuan
28-06-2008, 01:57 PM
Tiện thể mình cũng nhờ các pác lỗi này là lỗi gì vậy ở VS C++,và cách khắc phục (mình ko phải dân IT nên các pác chỉ tường tận một chút,có hình ảnh càng tốt) Cảm ơn các pác nhiều


VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_ISampleGrabberCB
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _TIME_FORMAT_FRAME
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IMediaSeeking
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IMediaEvent
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IMediaControl
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IMediaFilter
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _CLSID_NullRenderer
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _MEDIASUBTYPE_RGB24
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _MEDIATYPE_Video
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _FORMAT_VideoInfo
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_ISampleGrabber
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _CLSID_SampleGrabber
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IBaseFilter
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _CLSID_FilterGraph
VideoAnaDoc.obj : error LNK2001: unresolved external symbol _IID_IGraphBuilder

manh.1041399
28-06-2008, 07:32 PM
Chào Ngohaibac!
Tôi là thành viên mới vào nghề nghe các thầy nói về điện tử thấy mê lấm, nhưng khổ nổi phần thực hành tôi còn yếu lắm. Bạn có thể giúp mình tiến bộ đuợc không. Tôi cũng liều thử làm đồ án xe lăng cho ngưòi già: là đề tài tự nghĩ thôi nhưng không biết bắt đầu từ đâu. Mình học cơ điện tử, nếu đuợc giúp đỡ mình xin chân thành cảm ơn cậu rất nhiều

haku039
21-09-2008, 11:32 AM
Chào mọi người,mình mới bắt đầu học con 8051,mình làm theo TUT của anh ngohaibac,nhưng mình ko có code và sơ đồ mạch để truyền dữ liệu từ 8051 lên PC,bác nào giúp mình với hay mail cho minh theo địa chỉ : nguythachun@gmail.com
...thanks!!!

nhti
27-09-2008, 08:13 PM
cam on mấy bác, để em về đọc đã có gì thắc mắc hôm sau em sẻ hỏi mấy bác

truongnv
29-09-2008, 11:34 AM
Em muốn điều khiển tốc độ động cơ DC từ PC, PIC dùng cái UART2. Các bác giúp em xem chương trình PIC sai chỗ nào mà em k thể truyền thông được.
Cám ơn các bác nhiều nhiều.

tiendungkct
30-09-2008, 10:39 AM
Anh Bắc ơi ,em đã làm theo các bước trên mà vẫn không chạy được.Anh gửi cho em code mà anh viết để thực hiện chương trình cho em được không.em không hiểu làm sai ở đâu nữa mà không chạy được.em đang cần lắm ah.Cảm ơn anh!

mình cũng viết 1 ít về nó nhưng chắc chưa hay lắm bạn tham khao nha .có sai ji bạn góp ý nha

ngocvq
06-12-2008, 06:05 AM
E cảm ơn a Bắc rất nhiều!

tcoi001
06-01-2009, 09:00 PM
Mình cũng đang muốn viết một phần mềm truyền thông giữa hai máy tính:có thể gửi các byte đơn (kí tự) hoặc là file text qua cho nhau dùng VB 6.0
Mình cũng mới học VB nên chưa biết nhiều. Tìm kếm trên mạng thì được đoạn code này

code:truyền kí tự

Private Sub cmdClear_Click()
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub

Private Sub cmdSend_Click()
MSComm1.Output = Text2.Text
End Sub

Private Sub Form_Load()
cmdSend.Caption = "&Send"
Text1.Text = ""
Text2.Text = ""
Text1.Enabled = False
cmdExit.Caption = "&Exit"
With MSComm1
.Settings = "9600,N,8,1"
.CommPort = 1
.RThreshold = 1
.SThreshold = 0
.InputMode = comInputModeText
.InputLen = 0
.Handshaking = comNone
.InBufferSize = 1024
.OutBufferSize = 1024
If .PortOpen = False Then
.PortOpen = True
End If

End With
End Sub

code: truyền file text

Private Sub Command1_Click()
Cdlg.DialogTitle = "Send file..."
Cdlg.Filter = "Textfile (*.TXT)|*.txt|All Files (*.*)|*.*"
Cdlg.InitDir = App.Path
Cdlg.FileName = ""
Cdlg.ShowOpen

' The Function Call
If Cdlg.FileName <> "" Then SendFile (Cdlg.FileName)

End Sub

Private Sub Form_Load()

' Opens the selected com port
MSComm1.CommPort = 1
MSComm1.PortOpen = True

End Sub


' here is the function
Function SendFile(tmp$)

Dim temp$
Dim hsend, bsize, LF&

' Open file
Open tmp$ For Binary Access Read As #2
' Check size on Mscomm1 OutBuffer
bsize = MSComm1.OutBufferSize
' Check file length
LF& = LOF(2)

' This code makes tiny pieces of data (Buffer sized)
' And send's it

Do Until EOF(2)

If LF& - Loc(2) <= bsize Then
bsize = LF& - Loc(2) + 1
End If

' Make room for some data
temp$ = Space$(bsize)

' Put the data piece in the Temp$ string
Get #2, , temp$

MSComm1.Output = temp$

Do
ret = DoEvents()
' Wait until the buffer is empty
Loop Until MSComm1.OutBufferCount = 0
Loop

' close file
Close #2

End Function

Nhưng ở hai đoạn code này mình thấy đều chỉ có phần truyền kí tự và file mà chưa có phần nhận.Vậy thì chương trình có thể chạy được ko?
Ai rành về cái này có thể viết tiếp hộ mình được ko?
ah còn 1 yêu cầu nhỏ nữa là phần mềm thì phải có giao diện nữa nhỉ? có thể hướng dẫn mình cách tạo giao diện bằng tiếng việt được ko? kiểu như là một dòng ghi là: gửi file hay ki tự còn dòng dưới ghi là file hay kí tự nhận được.
Cảm ơn mọi người nhiều.
cảm ơn anh Bắc đã mở diễn đàn này cho đàn em học hỏi.
Cảm ơn!

ltt
20-01-2009, 10:06 PM
tui chỉ có thể giúp bạn phần truyền kí tự thui.bạn có thể tham khảo đoạn chương trình đính kèm theo đây.Có gì không hiểu tui có thể giúp bạn

ngohaibac
27-01-2009, 09:39 AM
Chào Ngohaibac!
Tôi là thành viên mới vào nghề nghe các thầy nói về điện tử thấy mê lấm, nhưng khổ nổi phần thực hành tôi còn yếu lắm. Bạn có thể giúp mình tiến bộ đuợc không. Tôi cũng liều thử làm đồ án xe lăng cho ngưòi già: là đề tài tự nghĩ thôi nhưng không biết bắt đầu từ đâu. Mình học cơ điện tử, nếu đuợc giúp đỡ mình xin chân thành cảm ơn cậu rất nhiều

Chào bạn.

Diễn đàn là nơi trao đổi, có rất nhiều người rất giỏi, mỗi người biết chút, góp nhặt vào sẽ là kiến thức tốt cho mình. Bạn cứ mạnh dạn thảo luận đề tài của bạn trên diễn đàn nhé.

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

tungtot_vl
26-02-2009, 10:09 AM
mình muốn giao tiếp PC với 2 hoặc nhiều PIC thông qua 1 cổng COM của PC. nhưng khi PC gửi xuống chỉ có 1 PIC nhận data. giốmg như chuẩn I2C ấy. PC là Master còn các PIC là Slever. Bác nào biết thì chỉ giúp mình hướng giải quyết với. thank you!

nguyen tien
27-02-2009, 10:59 AM
chào bác Bắc, vừa qua em có thực hiện cái TUT bác viết về RS232 hướng dẫn về lập trình giao tiếp RS232 bằng VC++. (www.picvietnam.com/download/Tutorial/TUT01.03.PVN.NOHB.100106.pdf). Em làm theo bác chỉ mà nó báo 102 lỗi, toàn lỗi "error C2018: unknown character '0xa0' ". Bác có thể giải thích cho em lỗi này đc không? Và cách khắc phục như thế nào.
Project em tạo đây: http://www.mediafire.com/?zlmntzbeg3m . Cám ơn các bác đã đọc!

tranvankien_bk
27-02-2009, 11:37 AM
em dang lam ve giao tiep rs232 giua pic 16f877a voi may tinh.em khong biet lap trinh vb6.0 de truyen du lieu .bac nao biet day em voi .thank ,,,,,,,,,,,

xuanhiendk2
27-02-2009, 11:58 AM
Các bạn ơi làm thế nào để viết được tiếng Việt trong CCS thế? Có phải chúng ta tạo một font rồi include font đó vào chương trình sau đó đổi lại mã ASCII mở rộng là được ko ạ?

hoang phuong
14-03-2009, 05:24 PM
Bác Bắc ơi!Sao bác ko dịch luôn ra file.exe cho a e đc nhờ

mtuankct
15-03-2009, 12:31 AM
mình muốn giao tiếp PC với 2 hoặc nhiều PIC thông qua 1 cổng COM của PC. nhưng khi PC gửi xuống chỉ có 1 PIC nhận data. giốmg như chuẩn I2C ấy. PC là Master còn các PIC là Slever. Bác nào biết thì chỉ giúp mình hướng giải quyết với. thank you!

Theo mình biết thì chuẩn RS232 chỉ cho phép thực hiện liên kết điểm-điểm, nếu bạn muốn tạo liên kết đa điểm thì bạn có thể chuyển nó sang chuẩn RS485

hoang phuong
15-03-2009, 03:54 PM
a Bắc ơi! E ko down dc nó xuống. Chương trình ko còn nữa rồi.

tpasterisk
21-03-2009, 04:08 AM
Em chào các bác, em thấy mọi người thảo luận xôn xao về giao tiếp cổng COM, cÓ rất nhìu bài hay luôn, nhưng em chưa thấy bác nào nói về tập lệnh AT.
Chẳng dấu là : em đang tìm hiểu tập lệnh AT, sau khi thiết lập giao tiếp với cổng COM, em muốn gửi, nhận tin nhắn bằng tập lệnh AT qua GSM modem G2403R .
Bác nào đã từng nghiên cứu về tập lệnh AT, cũng như là gửi nhận tin nhắn dùng tập lệnh AT xuất ra cổng COM -> GSM modem G2403R thì giúp em với.
Hiện tại em chưa biết viết câu lệnh như thế nào để xuất những câu lệnh AT ra cổng COM........................

chinh_coc
03-04-2009, 11:55 AM
Nếu viết bằng VB thì mình có xử lý được hiển thị giá trị thực không. đầu vời ccomms là int còn hiển thị ra giá trị cstring

nguyennam8888
03-04-2009, 02:13 PM
các bác giúp em với, nghĩ mãi mà chưa làm được , chương trình của em nó chỉ nhận thôi, nhưng khi nhận xong thì PIC lại không thấy hiển thị, còn truyển ngược lại thì chưa đươc
code trong Pic:
#include <16F877a.h>
#include <DEFS_16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600,parity=n, xmit=PIN_C6, rcv=PIN_C7)
unsigned char dulieu;
#INT_RDA
void data_receive(void)
{
dulieu = getc();
putc(dulieu);
}
void main()
{
set_tris_a(0);
ENABLE_INTERRUPTS(GLOBAL);
ENABLE_INTERRUPTS(INT_RDA);
while(true)
{
output_a(dulieu);

delay_ms(2000);
}
}
code trong VB:

Private Sub cmdClear_Click()
Text1.Text = ""

End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub

Private Sub cmdSend_Click()
MSComm1.Output = Text2.Text
End Sub

Private Sub Form_Load()
cmdSend.Caption = "&Send"
Text1.Text = ""
Text2.Text = ""
Text1.Enabled = False
cmdExit.Caption = "&Exit"
With MSComm1
.Settings = "9600,N,8,1"
.CommPort = 4
.RThreshold = 1
.SThreshold = 0
.InputMode = comInputModeText
.InputLen = 0
.Handshaking = comNone
.InBufferSize = 1024
.OutBufferSize = 1024
If .PortOpen = False Then
.PortOpen = True
End If

End With
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
Text1.Text = Text1.Text + Asc(MSComm1.Input)
End If
End Sub
(em tìm mãi mà không thấy chỗ nào để viết code.)

sinhthai
03-04-2009, 04:00 PM
Pak hải ơi !cho em hỏi về rs232 cái:em muốn bít về nó mà em thì chưa bít j cả.pak có thể giúp em hỉu đôi chút về nó ko.có tài liệu nào bằng tiếng việt nói về nó ko pak.cám ơn pak nhìu

sinhthai
03-04-2009, 04:18 PM
pak nao co tài liệu tiếng việt về cổng com ko.em đang rất cần.thanks các pak nhìu,

trinhminhson86
06-04-2009, 04:37 PM
Em đang tìm hiểu cách giao tiếp cổng COM bằng VC++ bằng cách sử dụng thư viện inpout32 qua win 32.Bác nào biết về cái này thì hướng dẫn e với.

digan
13-04-2009, 10:40 PM
Xin chào! Mình thử giao tiếp mãi mà ko dc không biết sai sót ở đâu. mình dùng cachs bật các led ở Port b để báo là có truyền thông
#include <16f877a.h>
#include <def_877a.h>
//#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
char buf;
int a;
// Ngat Truyen thong
#INT_RDA
Receive_isr()
{

buf=getc();
putc(buf);
PORTB=0x00;

Các cao thủ KT hộ với. tôi nghi là sai phần khai báo(đánh dấu), nhưng mục này thường copy nên ko rõ bản chất

ThaoBinh90
16-04-2009, 04:14 PM
Mình cũng đang làm RS232, đang gặp khó khăn về buffer của RS232. Khi chương trình PIC gởi lên một chuổi nào đó, trình ứng dụng đọc chuỗi này chưa hết thì nó vẫn còn trog bộ đệm làm ảnh hưởng đến lệnh sau đó. Có ai đó chỉ mình xóa bộ đệm của RS232 giúp mình với.

tucn87
20-04-2009, 11:25 AM
anh Hải ơi, em làm theo cái TUT của anh nhưng đến đoạn thêm điều khiển AxtiveX Microsoft Communications 6 thì bị lỗi "don't send". Em dùng bản Visual Studio 6 Enterprise Edition.

mtuankct
20-04-2009, 12:22 PM
Bạn cài lại VS :D

tucn87
20-04-2009, 12:32 PM
Bạn cài lại VS :D

em cài lại rồi vẫn không được :((

mtuankct
20-04-2009, 12:59 PM
Nếu khôg được thì cài lại win đi haha hoặc có thể thử kiếm cái đĩa cài VS khác xem sao

tucn87
22-04-2009, 07:20 PM
sau bước 1 của TUT, xóa 2 nút OK, CANCEL và dòng văn bản tĩnh TODO thì VC báo lỗi don't send và thoát ra ngoài, vậy là lỗi gì vậy các anh?

chinh_coc
24-04-2009, 02:51 PM
Mình đang làm cái VB để làm giao diện với VXL.
Mình đã thiết kế như các bạn nói ở trên nhưng không hiểu sao khi VXL của mình gửi ra một giá trị kiểu INT (là số 15 chẳng hạn) thì trên giao diện không hiển thị đúng số 15 mà nó hiển thị một kiểu khác. Làm thế nào để hiển thị giá trị thực từ VXL gửi ra.
Mong các bạn giúp đỡ . đây là code VB của mình

Private Sub Command1_Click()
On Error GoTo OpenFalse
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Exit Sub
OpenFalse:
MsgBox Err.Description & vbLf + vbCr + "Loi, khong the mo cong. Hay dong cac ung dung dang su dung cong COM"

End Sub

Private Sub Command2_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub

Private Sub Command3_Click()
On Error GoTo sendfalse
MSComm1.Output = Text1.Text
Exit Sub
sendfalse:
MsgBox Err.Description & vbLf + vbCr + "Loi, Cong COM chua duoc mo, nhan Connect"
End Sub

Private Sub Form_Load()
With MSComm1
.Settings = cmbBaudRate.Text + "N,8,1"
.RThreshold = 1
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeText
.ParityReplace = ""
.CommPort = Switch(cmbComPort.Text = "COM 1", 1, cmbComPort.Text = "COM 2", 2, cmbComPort.Text = "COM 3", 3, cmbComPort.Text = "COM 4", 4)
End With
End Sub

Private Sub MSComm1_OnComm()
Dim StringIn As String
If MSComm1.CommEvent = comEvReceive Then
StringIn = MSComm1.Input 'Nhan chuoi du lieu to VCOM
Text2.Text = StringIn
End If
End Sub

phandinh
24-04-2009, 05:53 PM
dữ liệu mà VB nhận ở dạng internal number , để hiển thị ra màn hình bạn phải chuyển về dạng text string :
bạn thử thay Text2.Text = Cstr(StringIn)
hoặc Text2.Text = Asc(StringIn) xem

chinh_coc
25-04-2009, 12:59 AM
Mình đã xử lý được rồi. thanks các bạn đã giúp đỡ

Chỉ cần tách các kí tự nhận được ra rồi hiển thị lên là OK.

TANDEM
26-04-2009, 12:23 PM
Vẫn là vấn đề giao tiếp qua RS 232. Hôm trước đệ có làm giao tiếp PC - RS 232 -PIC theo một chiều từ PC - PIC, phần giao tiếp với cổng COM trên máy tình thì dùng C# và đã gửi được tín hiệu qua PIC rồi, tuy nhiên đoạn chương trình ở PIC đệ viết bằng CCS và nó chạy không theo ý đồ của đệ 'ý của đệ là sau khi check được LED nào thì LED đó sẽ sáng cho đến khi nào không check nữa' Vậy nhờ các huynh chỉ giáo!
Đây là đạn code:

#include <16f877a.h>
#include <def_877a.h>
#use delay(clock=20000000)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)

#define may1 RD0
#define may2 RD1
#define may3 RD2
#define may4 RD3
#define may5 RD4
#define on 1
#define off 0

char ch;

#INT_RDA
Receive_isr()
{
if (kbhit())
{
ch = getc();

if (ch=='a') may1 = on;
if (ch=='b') may2 = on;
if (ch=='c') may3 = on;
if (ch=='d') may4 = on;
if (ch=='e') may5 = on;

if (ch=='f') may1 = 0;
if (ch=='g') may2 = 0;
if (ch=='h') may3 = 0;
if (ch=='i') may4 = 0;
if (ch=='j') may5 = 0;

}
}
void main()
{
set_tris_d(0);
portd=0b00000000;
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
while (1)
{
}
}


và kèm theo C# and protues:

namqn
26-04-2009, 03:58 PM
Vẫn là vấn đề giao tiếp qua RS 232. Hôm trước đệ có làm giao tiếp PC - RS 232 -PIC theo một chiều từ PC - PIC, phần giao tiếp với cổng COM trên máy tình thì dùng C# và đã gửi được tín hiệu qua PIC rồi, tuy nhiên đoạn chương trình ở PIC đệ viết bằng CCS và nó chạy không theo ý đồ của đệ 'ý của đệ là sau khi check được LED nào thì LED đó sẽ sáng cho đến khi nào không check nữa' Vậy nhờ các huynh chỉ giáo!
Đây là đạn code:
...
Vậy hiện thời thì chương trình của bạn chạy ra sao?

Thân,

TANDEM
26-04-2009, 04:11 PM
Em mô phỏng bởi Protues với cổng COMPIM, trên PC em tạo giao diện viết bởi C#, chương trình đã chạy và truyền tín hiệu qua PIC, nhưng khi check các boxcheck trên giao diện thì không theo ý muốn. Ví dụ: khi em check box 1 thì tương ứng với LED1 sáng sau đó chuyển sang check Box2 thì LED2 sáng [nhưng] LED1 lại tắt mất tương tự với các LED khác cũng vậy. Em đã nghiên cứu rất nhiều rồi!!!???

namqn
26-04-2009, 04:20 PM
Em mô phỏng bởi Protues với cổng COMPIM, trên PC em tạo giao diện viết bởi C#, chương trình đã chạy và truyền tín hiệu qua PIC, nhưng khi check các boxcheck trên giao diện thì không theo ý muốn. Ví dụ: khi em check box 1 thì tương ứng với LED1 sáng sau đó chuyển sang check Box2 thì LED2 sáng [nhưng] LED1 lại tắt mất tương tự với các LED khác cũng vậy. Em đã nghiên cứu rất nhiều rồi!!!???
Bạn đang thao tác trực tiếp trên các bit của thanh ghi PORTD, điều này có thể dẫn đến hiện tượng như bạn đã thấy, do hiệu ứng read-modify-write của các lệnh thao tác bit trong PIC.

Bạn nên dùng một thanh ghi đệm, khởi tạo giá trị của nó bởi giá trị của PORTD, sau đó cập nhật các bit của thanh ghi đệm này và ghi vào PORTD, mỗi khi bạn muốn cập nhật 1 bit nào đó của PORTD.

Thân,

Nin
03-05-2009, 10:49 PM
chương trinh dùng ngắt RDA rồi còn dùng kbhit() chi nữa... cái này dùng VB6 thấy dễ lắm mà.

TANDEM
16-05-2009, 05:08 PM
Đây là code trong C# của đệ:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public bool open = true;
public Form1()
{
InitializeComponent();
Com4.DataReceived += new SerialDataReceivedEventHandler(Com4_DataReceived);
}

private void button_open_Click(object sender, EventArgs e)
{
if (open)
{
open = false;
button_open.Text = "Đóng cổng";
label3.Text = "Cổng Com đang mở";
Com4.Open();
}
else
{
open = true;
button_open.Text = "Mở cổng";
label3.Text = "Cổng Com đang đóng";
Com4.Close();
}
}

private void button1_Click(object sender, EventArgs e)
{
Com4.Close();
Close();
}

private void Com4_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
String nhan = ""; // Luu du lieu nhan
if (sender == Com4)
{
nhan = Com4.ReadExisting().ToString();
tBox_Recei.Text = tBox_Recei.Text +nhan; //Lỗi xuất hiện ở dòng này
}
}

private void button_trans_Click(object sender, EventArgs e)
{
if (Com4.IsOpen)
{
Com4.WriteLine(tBox_trans.Text);
tBox_trans.Clear();
}
else MessageBox.Show("Cổng COM chưa mở! Hãy mở cổng COM");
}
}
}
Khi đệ dùng Terminal để gửi-nhận dữ liệu. Chiều từ C# đến Terminal thì rất tốt, chiều ngược lại thì C# báo lỗi. Đệ không biết là lỗi gì? Rất mong được các huynh chỉ giáo!

TANDEM
17-05-2009, 09:38 AM
Sao không thấy huynh nào giúp mình vậy??!

TANDEM
18-05-2009, 01:10 PM
Đến bây giờ đệ vẫn chưa tìm ra C# báo lỗi là do đâu? Khi đệ gửi chuỗi ký tự từ PIC lên nó cũng báo lỗi tương tự? Mong các huynh chỉ giáo!

Delfy_Coltech
26-05-2009, 04:48 PM
Hi bạn TANDEM!
Mình đã xem Form truyền nhận dữ liệu viết bằng C# của bạn.
Mình có một vài góp ý nhỏ như sau:

- Để có một Form truyền nhận dữ liệu tối ưu hơn thì bạn nên viết thêm phần cho phép người dùng lựa chọn cổng COM. Ở đây có thể máy tính của bạn là COM4 nên mình thấy bạn chỉ để là COM4.
- Hàm truyền bạn dùng là Writeline, vậy thì hàm nhận cũng nên dùng là Readline.
Ở đây có lẽ mục đích truyền nhận chắc cũng không quá phức tạp (chưa cần đến chuyển đổi cơ số) nên dùng hai lớp này là cũng OK rồi.

Mình Test thử với Serial Port Monitor của CCS thì phần mềm của bạn vẫn ko thấy truyền nhận được.
Bạn xem lại nhé! Có j ta trao đổi tiếp

TANDEM
28-05-2009, 11:50 PM
Cám ơn bạn Delfy_Coltech! Hiện mình vẫn đang vật lộn với việc truyền nhận đó.
- Cho phép lựa chọn nhiều cổng COM cũng như các thông số khác thì mình đã viết được rồi.
- Khi giao tiếp với Serial Port Monitor của CCS thì việc truyền nhận diễn ra hoàn toàn suôn sẻ, hai bên đều truyền và nhận đúng các số và ký tự.
Khi truyền từ PIC đến thì cả Serial Port Monitor của CCS và C# đều hiện các ký tự lạ. Mình không hiểu lý do tại sao??

thienkien
29-05-2009, 08:30 PM
có lẽ bạn xem lại khai báo baurate
mình cũng đang gặp vấn đề khi dung hspll để nhân xung thạch anh (10M*4) thì truyền nhận bị sai, có ký tự lạ ( nếu khai báo 10M thì truyền nhận chính xác) , có lẽ là sai baurate( ko biết có cần phải tính lại baurate ko nhỉ, ví dụ :nhân 4, hoặc chia 4 chăng hạn??)

TANDEM
30-05-2009, 12:09 AM
Mình chưa hiểu hết ý bạn thienkien. Mình đã thay đổi tần số bằng 10M rồi nhưng vẫn không đạt được kết quả truyền chính xác.

thienkien
30-05-2009, 06:55 AM
hi TanDem! hôm qua mình chưa xem kỹ câu hỏi của bạn,bạn dùng thạch anh thực bao nhiêu thì khai báo bấy nhiêu thôi!! theo mình bạn nên thêm 1 ký tự để nhận biết kết thúc chuỗi :ví dụ ký tự '\13' chăng hạn: Com4.WriteLine(tBox_trans.Text+(char)13);

ban thử đoạn code dưới PIC này xem:
#include<16f877a.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20M)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8,pari ty=N)
#use fast_io(b)
int8 dodai,dem=0;
int input_ready;
char mang[50];

#int_rda
void nhan()
{
//disable_interrupts(int_timer0);
//if(kbhit())
mang[dem]=getc();
putc(mang[dem]);

if(mang[dem]==0x0d)
{
dodai=dem;
mang[dem]='\0';
input_ready=1;
dem=0;

}
dem++;


// enable_interrupts(int_timer0);

}

void main()
{
int16 i,j;

input_ready=0;
set_tris_b(0);
enable_interrupts(global);
enable_interrupts(int_rda);
output_b(0);
while(1)
{
if(input_ready==1)
{

printf("CHUOI=%s",mang);
input_ready=0;
dem=0;
}

//co the xuat ra portB de kiem tra bang led ne
for(j=0;j<dodai-1;j++)
{
output_b(mang[j]);
delay_ms(500);

}
}
}



nếu ko được bạn tải cái rs232tester về kiểm tra nhé

TANDEM
31-05-2009, 03:44 PM
Hi thienkien, dù sao cũng cám ơn bạn. Nhưng hình như tôi thì ở trái đất còn bạn thì ở sao hỏa rồi cả hai đều ngồi trên chiếc cân.... Sau đó thì thế nào nhỉ?

Delfy_Coltech
02-06-2009, 02:02 PM
Cám ơn bạn Delfy_Coltech! Hiện mình vẫn đang vật lộn với việc truyền nhận đó.
- Cho phép lựa chọn nhiều cổng COM cũng như các thông số khác thì mình đã viết được rồi.
- Khi giao tiếp với Serial Port Monitor của CCS thì việc truyền nhận diễn ra hoàn toàn suôn sẻ, hai bên đều truyền và nhận đúng các số và ký tự.
Khi truyền từ PIC đến thì cả Serial Port Monitor của CCS và C# đều hiện các ký tự lạ. Mình không hiểu lý do tại sao??

Nếu như bạn nói thì chắc là do chương trình CCS của bạn rồi!
Đầu tiên bạn cứ thử truyền các mã hex xem nó nhận thế nào đã!
Rồi mới truyền số hoặc string.
Thử với cái Terminal C# này xem sao.
Good luck!

hoangnguyen_qn
02-06-2009, 06:54 PM
các bạn xem thư chương trình này giúp mình nha:chỉ cần truyền 1 ký tự từ pc xuống pic và phản hồi lại ký tự đó.nhưng có chút vấn đề ko biet phần cứng hay mềm nữa:
#include <16f877a.h>
#include <de_16f877a.h>
#fuses nowdt,noprotect,noput
#device *=16
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7)
char c;
#int_rda
void receive()
{c=getc();
putc(c);
}
void main()
{enable_interrupts(global);
enable_interrupts(int_rda);
while(true)
{
}
}

nam228
02-06-2009, 10:09 PM
xin chào hoangnguyen_qn
mình nghĩ đoạn code của bạn không có vấn đề,ban nên kiểm tra lại mạch con MAX232
dùng đồng hồ đo chân 2 và 6 nếu được khoảng +-7v trở lên la ok

nam228
02-06-2009, 10:34 PM
chào mọi người
mình muốn dùng Matlab truyền dãy số xuống Pic 16f877a
nhưng mình chỉ truyền được dãy số 2 bytes ,từ 3 bytes trở lên PIc chỉ nhận được số đầu tiên.Theo mình hiểu trong PIC6f877a thanh ghi đệm RCREG chỉ có 2 bytes,vậy có cách nào tạo ra một bộ đệm lớn hơn (khoảng 4 bytes) bằng phần mềm không?

minhtrung2002dn
21-06-2009, 11:14 AM
kính gửi anh ngohaibac
em đang viết chương trình giao tiếp cổng com giửa máy tính và đầu cân DIOMAT S bằng vb. nhưng do ko biết khung truyền như thế nào. Có 1 phần mềm củ của nhà cung cấp nhưng do ko thích nghi với thời điểm hiện tại, phần mềm này chủ yếu nhận dử liệu cân về máy tính. Em đã dùng phương pháp nối hai máy tính với nhau qua cổng com rs232 và dùng phần mềm terminal để text xem phầm mềm củ của nhà cung cấp gửi dử liệu gì qua đầu cân. Lúc này em nhận được dử liệu HEX trên terminal như thế này:02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 và vòng lặp cứ tiếp tục như vậy.Em ko hiểu họ dùng ký tự nào để gửi qua đầu cân . Mong anh giúp em cảm ơn

ngohaibac
21-06-2009, 05:08 PM
kính gửi anh ngohaibac
em đang viết chương trình giao tiếp cổng com giửa máy tính và đầu cân DIOMAT S bằng vb. nhưng do ko biết khung truyền như thế nào. Có 1 phần mềm củ của nhà cung cấp nhưng do ko thích nghi với thời điểm hiện tại, phần mềm này chủ yếu nhận dử liệu cân về máy tính. Em đã dùng phương pháp nối hai máy tính với nhau qua cổng com rs232 và dùng phần mềm terminal để text xem phầm mềm củ của nhà cung cấp gửi dử liệu gì qua đầu cân. Lúc này em nhận được dử liệu HEX trên terminal như thế này:02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 02 30 31 23 54 47 23 03 11 và vòng lặp cứ tiếp tục như vậy.Em ko hiểu họ dùng ký tự nào để gửi qua đầu cân . Mong anh giúp em cảm ơn

Chào bạn.

Ở đây theo mình nghĩ thì họ gửi theo kiểu binary, mỗi lần gửi 1 byte có giá trị tương ứng với các byte mà bạn đã xem đó. Bạn viết lại chương trình bằng VB hoặc là dùng chính Terminal để gửi các byte này xem (save các giá trị vào text file rồi gửi 1 phát).

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

minhtrung2002dn
24-06-2009, 02:10 PM
cảm ơn anh đã hồi âm cho em.
Để truyền dử liệu qua đầu cân DISOMAT S em đã viết code như sau:
Private Sub Form_Load()
MSComm1.CommPort = 3
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 1
MSComm1.InputLen = 500
'MSComm1.Handshaking = False
MSComm1.InputMode = comInputModeText
MSComm1.RTSEnable = True
MSComm1.DTREnable = True
MSComm1.PortOpen = True
MSComm1.ParityReplace = ""
MSComm1.NullDiscard = True

End Sub
Sub delay(ByVal giay As Double)
Dim star As Double
star = Timer
While (Timer < star + giay / 1000)
DoEvents
Wend
End Sub
Private Sub Timer3_Timer()
Dim BytesToSend(0 To 17) As Byte ' khai báo m?t m?ng 2 ph?n t?
Dim Buffer As Variant
' l?u tr? d? li?u vào m?ng ki?u byte ? trên
BytesToSend(0) = &H2
BytesToSend(1) = &H30
BytesToSend(2) = &H31
BytesToSend(3) = &H23
BytesToSend(4) = &H54
BytesToSend(5) = &H47
BytesToSend(6) = &H23
BytesToSend(7) = &H3
BytesToSend(8) = &H11
BytesToSend(9) = &H2
BytesToSend(10) = &H30
BytesToSend(11) = &H31
BytesToSend(12) = &H23
BytesToSend(13) = &H54
BytesToSend(14) = &H47
BytesToSend(15) = &H23
BytesToSend(16) = &H3
BytesToSend(17) = &H11
' cho vào m?t bi?n Variant
Buffer = BytesToSend()
'ghi vào c?ng n?i ti?p
MSComm1.Output = Buffer
delay 600

End Sub
em đã truyền được rồi và dử liệu đầu từ đầu cân cũng đã gửi lại máy tính. nhưng em thấy cách viết code như trên của em chưa tốt lắm mong anh nào có cách hay hơn chỉ giúp.

thinh001
15-09-2009, 03:22 PM
chào các bác em định làm bài tập là LCD giao tiếp máy tính, tức là mình xuất 1 ký tự trên máy tính xuống LCD nhưng lại không có tài liệu
ai có thì cho em xin với
Cám ơn trước

timtoihochoi
26-09-2009, 12:23 AM
Đây là tài liệu Serial_Complete của Jan Axelson, (38.5MB)
http://www.tailieuvietnam.net/download/upload/ngohaibac/Jan%20Axelson%20-%20Serial%20Port%20Complete.pdf

Mọi người down về để lấy làm tài liệu cho mình nhé.

sao không được vậy bạn. Bạn xem lại link được ko. thank

thanhhuyen87
08-10-2009, 11:46 AM
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

bạn ơi! bạn sửa kiểu gì vậy. máy của mình cũng bị lỗi như thế. chạy các bài vc++ khác thì ngon ơ. riêng bài này lại bị lỗi như thế :(

nmhai
08-10-2009, 12:29 PM
Về cái giao tiếp này tôi cũng đã làm khá nhiều mạch, ,phần mềm thì viết bằng VB thôi. Nói chưng khá hay. Nhân đây, có bác nào đã làm mạch đo nhiệt độ dùng PIC và gửi dữ liệu lên máy tính chưa. Và dữ liệu đó sẽ được đưa vào một đồ thị, vẽ thanh dạng biểu đồ theo thời gian. Ở nhà tôi đã làm cái mạch đo rồi, nhưng còn khoản ghi dạng đồ thị thì chưa,ở nhà cũng có cái code mẫu họ dùng VB trông khá đơn giản,đồ thị chạy đẹp,khá ổn. Tôi thấy cái này khá hay. ta có thể lưu đồ thị đó lại,sau có thể xem lại tiến trình biến đổi nhiệt..v.v...

Thu thập dữ liệu và đưa lên máy tính, vẽ đồ thị thì mình cũng làm khá nhiều rồi, nhưng toàn viết bằng Visual C#.

hoangxudi
23-10-2009, 08:06 AM
Xin chào các bác! Em mới lên diễn đàn thấy các bác nhìu tài liệu hay quá em mới down về một ít. Sau này mong các bác chỉ bảo thêm.
Em đang làm mạch giao tiếp dùng RS232 mà tìm khắp không thấy tài liệu nào hay. Có bác nào có Tài liệu nào hay xin gửi cho em với.Mail của em là:
hoangxudi@gmail.com
Em xin Cảm ơn Và Hậu Tạ!

dktd5_pro
23-04-2010, 09:07 PM
ah oi giup e ve do an mon dieu khien dong co buoc su dung RS232 noi tiep voi may tinh .dktd5mta@gmail.com. cam on anh nhe

thanhsonhugoa4
04-06-2010, 12:09 AM
bạn ơi cho mình hỏi cách giao tiếp cân điện tử thông qua cổng RS232 như thế nào vậy? bạn có thể chỉ chi tiết cho mình ko? cam on nhieu nha

chuot_bac
07-06-2010, 09:28 PM
Em sử dụng cáp USB-to COM để truyền dữ liệu cho PIc6F877A. Em sử dụng Terminal để truyền dữ liệu nhưng sao khi truyền bất cứ kí tự nào xuống thì dữ liệu truyền về bất kể khi em truyền vào chân nào của PIC, kẻ cả khi chưa cấp nguồn cho PIC.
Mong bác chỉ giáo!

HAI1817
11-06-2010, 01:04 PM
tại sao cổng usb chuyển sang 232 ma khi truyền từ máy tính xuống pic không nhiễu,khi truyền từ pic lên máy tính giao diện vb thì bị nhiễu.mong các cao thủ chỉ dùm cảm ơn nhiều

* Edit

xuanducdhcn
28-10-2010, 08:23 PM
MONG SỰ GIÚP ĐỠ GẤP CỦA MỌI NGƯỜI VỀ RS232 ( MÌNH ĐANG RẤT CẦN )

Mình đang làm một chương trình kết nối cổng RS232 sử dụng visual c++. không hiểu vì sao khi test chương trình thì thấy không truyền xuống PIC6f877a được.
chương trình của mình :


#include "stdafx.h"
#include <windows.h>

// kiem tra che do mo cong.

TCHAR *pcCommPort = TEXT("COM3");
HANDLE hcom = CreateFile( pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // default security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

// cài đặt trạng thái ban đầu .
void Setting()
{
if (hcom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return ;
}
else
{
// set timeouts
COMMTIMEOUTS cto = { 1, 100, 1000, 0, 0 };
DCB dcb;
if(!SetCommTimeouts(hcom,&cto))
printf ("E013_SetCommTimeouts failed\n");
// Thiet lap cac che do cong com
memset(&dcb,0,sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = 9600;
dcb.fBinary = 1;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = 8;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
if(!SetCommState(hcom,&dcb))
printf ("E013_SetCommTimeouts failed 2\n");
CloseHandle(hcom);
}
}

// Mo cong com

void RS232(CString data)
{
// Chuyen va nhan du lieu
char p;
char data_receive;
DWORD read = 0;
DWORD write=1; // Number of bytes to write to serial port
p = WriteFile(hcom,&data,write,&write,NULL); // write is updated with the number of bytes written
ReadFile(hcom,&data_receive,sizeof(data_receive),&read,NULL); // read is updated with the number of bytes read
DWORD i;
for (i=0; i<read; i++)
printf("%i ", (unsigned char)data_receive);
}

// BAT DAU HAM MAIN GUI MOT KY TU XUONG PIC16F877A.

void main(){

setting();

RS232('R');
}

CẢM ƠN MỌI NGƯỜI RẤT RẤT NHIỀU !!

xuanducdhcn
08-11-2010, 04:05 PM
Sao không có ai giúp mình vậy !

entredosaguas
10-11-2010, 10:29 AM
Trên VC++bạn làm theo TUT của anh Ngô Hải Bắc đó. Chạy ổn.Còn ở PIC thì viết chương trình ngắt nhận như sau:
#INT_RDA
VOID GET_CHAR()
{
char c;
c=getc();
}

tinhhoalong
18-01-2011, 12:32 AM
Chao mọi người. MÌnh đã làm theo TUT của a Bắc và Build được file RS232TUT.exe trên VC++ 6.0 Nhưng khi mình mang chương trình sang máy khác chạy thì không thấy gì cả (cảm giác là chương trình vừa kết thúc ngay khi bắt đầu) Ai rành về VC++ thì giúp mình khắc phục vấn đề này với. XIn chân thành cảm ơn.

minhduc_bn
18-01-2011, 10:09 PM
Mình có 1 mạch điều khiển động cơ DC sd VDK có giao tiếp với máy tính qua cổng COM.Dữ liệu về tốc độ được đọc về từ encoder. Giờ muốn lưu lại vào 1 file để chuyển thành đồ thị thì làm thế nào? có cao thủ nào giúp mình với.Mình dùng visual C++ để lập trình

bác hoàn thành công trình nghiên cứu về giao tiếp với máy tính chưa. bác có thể giúp em tài liệu cái. mong được trợ giúp. ducvm2512@yahoo.com

abcbac
21-04-2011, 12:55 AM
các bác ơi bây giờ em muốn lập trình cổng Com bằng VC#.Ai có tài liệu gì thì post lên cho em với

hoangan2125
03-05-2011, 08:20 PM
Anh em hỏi sao dùng thư Viện MSDN bản full dành cho Visual studio 6 mà ko thể tìn vào thư viện như anh bắc bảo.Vậy em phải làm thế nào :S

than50ddt
02-06-2011, 01:47 PM
chao cac anh.gio em dang lam giao dien vb truyen du lieu tu 8051 len pc, ma ko biet lam sao ca.co ai co tai lieu ko cho em voi

than50ddt
02-06-2011, 01:47 PM
giao dien viet bang vb nha

manhcddt08b
04-06-2011, 11:31 PM
chương trình mô phỏng cổng COM ảo xài nhu thế nào nhỉ.....????ai bit chỉ cho mình zới ("-")

manhcddt08b
04-06-2011, 11:46 PM
pac nao có chương trình giao tiếp PC với 16f877a cho em xin, để chạy thử tham khảo:-??

stupid11
05-06-2011, 12:51 AM
pac nao có chương trình giao tiếp PC với 16f877a cho em xin, để chạy thử tham khảo:-??

http://www.picvietnam.com/forum/showthread.php?t=9276

Bạn vào luồng này nhé..mình có gửi file hướng dẫn lập trình giao tiếp máy tính với PIC dùng cổng com ảo...

student_dtvt
12-10-2011, 09:20 PM
Mấy bác cho em hỏi cái này. Em truyền nhận dữ liệu giữa 16f877 và VB6 đã nhận đc nhưng chỉ với thạch anh 4000000Hz, khi thay đổi cái này thì lại không nhận được. Em làm với kit thạch anh 24Mhz ko thể nhận dữ liệu được. Mong các bác chỉ giáo giùm em với.

VB:

Private Sub Command1_Click()
On Error GoTo OpenFalse
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Exit Sub
OpenFalse:
MsgBox Err.Description & vbLf + vbCr + "Loi, khong the mo cong. Hay dong cac ung dung dang su dung cong COM"

End Sub

Private Sub Command2_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End
End Sub

Private Sub Command3_Click()
On Error GoTo sendfalse
MSComm1.Output = Text1.Text
Exit Sub
sendfalse:
MsgBox Err.Description & vbLf + vbCr + "Loi, Cong COM chua duoc mo, nhan Connect"
End Sub

Private Sub Form_Load()
With MSComm1
.Settings = cmbBaudRate.Text + "N,8,1"
.RThreshold = 1
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeText
.ParityReplace = ""
.CommPort = Switch(cmbComPort.Text = "COM 1", 1, cmbComPort.Text = "COM 2", 2, cmbComPort.Text = "COM 3", 3, cmbComPort.Text = "COM 4", 4)
End With
End Sub

Private Sub MSComm1_OnComm()
Dim StringIn As String
If MSComm1.CommEvent = comEvReceive Then
StringIn = MSComm1.Input 'Nhan chuoi du lieu to VCOM
Text2.Text = StringIn
End If
End Sub




PIC:
#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7)
#include <stdlib.h>
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte porte = 0x09
int8 y,i,a,b,c,d,e;
int16 x;
char string[5];
BYTE CONST maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};

void nhan_rs232()
{

for(i=0;i<=4;i++)
{
string[i]=getc();
}
printf("%s",string);
y=0;
x=atol(string);
a=x/10000;
x=x%10000;
b=x/1000;
x=x%1000;
c=x/100;
x=x%100;
d=x/10;
x=x%10;
e=x;

a=maled[a];
b=maled[b];
c=maled[c];
d=maled[d];
e=maled[e];

for(i=0;i<=200;i++)
{
output_A(0b01111);
output_D(a);
delay_ms(1);
output_A(0b11111);

output_A(0b10111);
output_D(b);
delay_ms(1);
output_A(0b11111);

output_A(0b11011);
output_D(c);
delay_ms(1);
output_A(0b11111);

output_A(0b11101);
output_D(d);
delay_ms(1);
output_A(0b11111);

output_A(0b11110);
output_D(e);
delay_ms(1);
output_A(0b11111);
}


}
/*void xoa()
{
for(i=0;i<=4;i++)
{
string[i]=0;
}
}*/
void main()
{
set_tris_b(0);
set_tris_e(0);
while(true)
{
if(y==0)
{
nhan_rs232();
delay_ms(100);

}
}
}


Em làm nhận một số 5 chữ số hiển thị led 7 đoạn

đây là file mô phỏng: http://www.mediafire.com/?d4g26cwn4bx4g8y

duong.dinh54
20-11-2011, 04:40 PM
a NgoHaiBac oi! cho e hỏi e đang phải làm bài tập lớn về " Xây dựng xây dựng moodul vào ra ghép nối với cổng rs232 với 8 đầu ra rơ le,dòng điện nhỏ hơn 500mA,8 đầu vào số cách li quang .xây dựng phần mềm giao điện đơn giản trên máy tính cho phép đọc 8 đầu vào và hiển thị kết quả dưới dạng đồ thị điều khiển bằng các nút ấn!!! phải làm ntn hả a?

lenam_vl
24-11-2011, 12:13 PM
Anh Bắc cho em hỏi là VC++ của em ko add được Microsoft Communications Control, version 6.0 anh ah. Laptop của em thì ko có cổng COM nhưng em đã mua 1 dây USB - RS232 DB9 rồi và đã lắp vào khi tạo project. Đến phần insert Microsoft Communications Control thì nó báo là No such interface supported!
Xin cảm ơn anh!

chithang00000
18-02-2012, 10:25 PM
#include <C:\Program Files (x86)\PICC\Devices\16F877A.h>
#use delay(clock=8000000)
#fuses HS, NOWDT, NOPROTECT, NOLVP
#include "D:\chuongtrinh\kt giaotiepmaytinh\sv-09-cd\tai-lieu-dua-sv\LCD\TRUYEN-RS232-LCD\code\LCD_LIB.c"
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=MYPC)

int8 temp;
char buffRev[16];
int8 idx = 0, i = 0;
void displayOnLCD(void);

void main(void)
{
lcd_init();
while(1)
{
if(0 != kbhit())
{
temp = fgetc(MYPC);
if(temp=='$')
{
for(i=0; i<sizeof(buffRev); i++) buffRev[i]= ' ';
continue;
}
else if(temp=='#')
{
for(i=0; i<idx; i++)
{
putc(buffRev[i]);
}
idx = 0;
displayOnLCD();
continue;
}
if(idx<16)
{
buffRev[idx++] = temp;
}
}
}
}

void displayOnLCD()
{
lcd_init(); // Init LCD.
lcd_gotoxy(1,1);
printf(lcd_putc, "%s", buffRev);
lcd_init(); // Init LCD.
lcd_gotoxy(1,2);
printf(lcd_putc, "%s", buffRev);
}

Bài trên là code của màn hình LCD điều khiển qua cổng Com nhưng mới được 1 hàng 16 cột ah, Bác nào giúp e sữa đoạn chương trình trên thành 2 hàng 16!!!, E thanks 1000 cái trước. Gà con.

chithang00000
18-02-2012, 10:33 PM
Dim RecvMsg As String
Option Explicit

Private Sub Form_Load()
With MSComm1
.CommPort = 2 ' Using Com2
.Settings = "9600,N,8,1"
.InBufferSize = 1024 'bo dem nhan 1024K
.OutBufferSize = 1024 'do dem xuat 1024K.
.SThreshold = 1 ' cho phep ngat khi nhan.
.RThreshold = 1 '
.InputLen = 0 ' doc toan bo bo dem...
.InputMode = comInputModeText
If .PortOpen = False Then
.PortOpen = True
End If
End With
End Sub

Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
RecvMsg = RecvMsg + MSComm1.Input ' doc ve du lieu nhan tu cong COM...
End Select
txtRecvMsg.Text = RecvMsg ' hien thi len textbox chuoi nhan..
End Sub

Private Sub CmdSendMsg_Click()
Dim SendMsg As String
RecvMsg = ""
SendMsg = "$" + txtSendMsg.Text + "#"
MSComm1.Output = SendMsg
End Sub

Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Else
MSComm1.PortOpen = False
End If
End
End Sub



Trên đây là đoạn chương trình từ VB qua cổng Com điều khiển xuống pic, nhưng mới chỉ được có 1 hàng 16 cột ah! bác nào bik gửi 2 hàng 16 cột giúp e sữa đoạn chương trình trên cái. Cám ơn các huynh trước nhoa!!

thuylien115
17-05-2013, 11:23 PM
bắc cho em hỏi sao em load về mà em không mở được vậy .lỗi tùm lum hết ,em là mem mới bắt đầu từ số o về c++ .em dùng vs2010 để mở

thaihevip
02-07-2013, 01:07 AM
Hiện nay tôi đang mở lớp đào tạo khóa học vi điều khiển 8051,pic và avr
Khóa học bao gồm các nội dung sau.Nội dung khóa học bao gồm 4 phần như sau:
*Phần 1
-Làm quen với ngôn ngữ lập trình C
-Làm quen với vi điều khiển pic,8051 và avr
*Phần 2
-Lập trình điều khiển led đơn,mở rộng port cho chip để điều khiển hàng trăm led đơn với đầy đủ các hiệu ứng.
-Lập trình điều khiển led 7 đoạn
-Lập trình điều khiển led ma trận
-Lập trình điều khiển LCD
-Lập trình ngắt
-Lập trình giao tiếp I2C
-Lập trình giao tiếp SPI
-Lập trình giao tiếp UART
*Phần 3
-Lập trình mã hóa và giải mã tín hiệu điều khiển từ xa tivi sony
-Lập trình mã hóa giải mã tín hiệu hồng ngoại
-Lập trình mã hóa giải mã tín hiệu RF
-Lập trình đồng hồ hẹn giờ
-Lập trình đồng hồ vạn niên
-Lập trình đặt mật khẩu bảo vệ thiết bị
-Lập trình hiển thị giá trị thực
-Lập trình điều khiển hệ thống đèn giao thông có phím đặt thời gian
-Lập trình điều khiển led ma trận giao tiếp máy tính 8x32 và 16x64,…,
-Lập trình giao tiếp máy tính
-Lập trình đo điện áp ADC
-Lập trình đếm sản phẩm
-Lập trình bàn phím điện thoại
-Lập trình phần mềm tra mã led matrix
*Phần 4
-Hướng dẫn vẽ mạch mô phỏng trên protues
-Hướng dẫn vẽ mạch in trên protues và trên altium
-Hướng dẫn làm 1 số mạch ứng dụng
-Thiết kế mạch điều khiển từ xa chống nhiễu
*Đối tượng tham gia khóa học bao gồm
-Những người đam mê lĩnh vực điện-điện tử
-Những người muốn tìm hiểu để biết
-Sinh viên,kỹ sư,…
Tất cả mọi người đều có thể tham gia khóa học này
*Học phí:
Học phí áp dụng cho tất cả các học viên đều như nhau 2.000.000 đồng/khóa.
-Tôi cam kết sẽ dạy đầy đủ các nội dung nói trên chỉ trong 1 khóa học 2 triệu.
-Sau khi hoàn thành khóa học nếu các học viên vẫn được hỗ trợ nếu chưa hiểu rõ các nội dung mình đã học.
*Hình thức học
-Đối với các học viên tại nội thành Hà Nội có thể đến học tại nơi,học trực tiếp.
-Đối với các học viên ở xa có thể học trực tuyến thông qua teamview,yahoo,skype
-Học viên có thể chọn học pic,avr hoặc 8051
*Địa chỉ liên hệ
Mail: thaihetoday@zing.vn
Yahaoo: thaihe_vip
Điện thoại: 0166.495.1093

supperchon
24-06-2021, 02:31 PM
levitra 10 mg 6 comprimidos precio (https://www.grupopenascal.com/2020/11/16/levitra-10-mg-6-comprimidos-precio)
cialis 2.5 mg precio (https://www.grupopenascal.com/2020/11/16/cialis-2-5-mg-precio)
comprar kamagra en espana contrareembolso (https://www.grupopenascal.com/2020/11/16/comprar-kamagra-en-espana-contrareembolso)
comprar cialis generico en andorra (https://www.grupopenascal.com/2020/11/16/comprar-cialis-generico-en-andorra)
la viagra se compra con receta medica (https://www.grupopenascal.com/2020/11/16/la-viagra-se-compra-con-receta-medica)
marcas de cialis generico en espana (https://www.grupopenascal.com/2020/11/16/marcas-de-cialis-generico-en-espana)
levitra precio 10 mg (https://www.grupopenascal.com/2020/11/16/levitra-precio-10-mg)
compra cialis original (https://www.grupopenascal.com/2020/11/16/compra-cialis-original)
tadalafilo normon precio (https://www.grupopenascal.com/2020/11/16/tadalafilo-normon-precio)
sildenafilo peru precio (https://www.grupopenascal.com/2020/11/16/sildenafilo-peru-precio)
vardenafilo qualigen precio (https://www.grupopenascal.com/2020/11/16/vardenafilo-qualigen-precio)
donde comprar cialis de forma segura (https://www.grupopenascal.com/2020/11/16/donde-comprar-cialis-de-forma-segura)
precios genericos de viagra (https://www.grupopenascal.com/2020/11/16/precios-genericos-de-viagra)
comprar levitra en santa coloma de gramanet (https://www.grupopenascal.com/2020/11/16/comprar-levitra-en-santa-coloma-de-gramanet)
hace falta receta para comprar cialis (https://www.grupopenascal.com/2020/11/16/hace-falta-receta-para-comprar-cialis)

supperchon
20-07-2021, 07:03 AM
precio en farmacias de viagra 50 mg (https://www.grupopenascal.com/2020/11/16/precio-en-farmacias-de-viagra-50-mg)
comprar viagra en negro en barcelona (https://www.grupopenascal.com/2020/11/16/comprar-viagra-en-negro-en-barcelona)
cialis se pueen tomar dos pastillas para una mejor ereccion (https://www.grupopenascal.com/2020/11/16/cialis-se-pueen-tomar-dos-pastillas-para-una-mejor-ereccion)
cialis 5 mg generico en paginas de espana (https://www.grupopenascal.com/2020/11/16/cialis-5-mg-generico-en-paginas-de-espana)
comprar viagra en benalmadena (https://www.grupopenascal.com/2020/11/16/comprar-viagra-en-benalmadena)
comprar viagra por internet espana contrareembolso (https://www.grupopenascal.com/2020/11/16/comprar-viagra-por-internet-espana-contrareembolso)
tadalafilo 5 mg precio (https://www.grupopenascal.com/2020/11/16/tadalafilo-5-mg-precio)
levitra 5 mg generico (https://www.grupopenascal.com/2020/11/16/levitra-5-mg-generico)
comprar cialis generico 20 mg contrareembolso (https://www.grupopenascal.com/2020/11/16/comprar-cialis-generico-20-mg-contrareembolso)
levitra generico vardenafil (https://www.grupopenascal.com/2020/11/16/levitra-generico-vardenafil)
como tomar cenforce (https://www.grupopenascal.com/2020/11/16/como-tomar-cenforce)
nuevo precio cialis (https://www.grupopenascal.com/2020/11/16/nuevo-precio-cialis)
en las farmacias se puede comprar cialis (https://www.grupopenascal.com/2020/11/16/en-las-farmacias-se-puede-comprar-cialis)
garantias levitra generico (https://www.grupopenascal.com/2020/11/16/garantias-levitra-generico)
precio de viagra femenino en peru inkafarma (https://www.grupopenascal.com/2020/11/16/precio-de-viagra-femenino-en-peru-inkafarma)
foro cenforce extra opiniones (https://www.grupopenascal.com/2020/11/16/foro-cenforce-extra-opiniones)
cialis generico precio argentina (https://www.grupopenascal.com/2020/11/16/cialis-generico-precio-argentina)
comprar viagra online mexico (https://www.grupopenascal.com/2020/11/16/comprar-viagra-online-mexico)
como comprar cialis cntra rembolso (https://www.grupopenascal.com/2020/11/16/como-comprar-cialis-cntra-rembolso)
se puede comprar viagra en las farmacias sin receta medica (https://www.grupopenascal.com/2020/11/16/se-puede-comprar-viagra-en-las-farmacias-sin-receta-medica)
compra viagra por internet 100 fiable (https://www.grupopenascal.com/2020/11/16/compra-viagra-por-internet-100-fiable)
donde comprar cialis en internet (https://www.grupopenascal.com/2020/11/16/donde-comprar-cialis-en-internet)
como comprar cialis generico en espana (https://www.grupopenascal.com/2020/11/16/como-comprar-cialis-generico-en-espana)
female viagra precio (https://www.grupopenascal.com/2020/11/16/female-viagra-precio)
precio levitra 20 mg 4 comprimidos (https://www.grupopenascal.com/2020/11/16/precio-levitra-20-mg-4-comprimidos)
fildena 150 online (https://www.grupopenascal.com/2020/11/16/fildena-150-online)
cialis generico blister (https://www.grupopenascal.com/2020/11/16/cialis-generico-blister)
se puede comprar viagra en las farmacias en cataluna (https://www.grupopenascal.com/2020/11/16/se-puede-comprar-viagra-en-las-farmacias-en-cataluna)
mejor precio para cialis 20 mg generico (https://www.grupopenascal.com/2020/11/16/mejor-precio-para-cialis-20-mg-generico)
como comprar viagra generico en alicante espana (https://www.grupopenascal.com/2020/11/16/como-comprar-viagra-generico-en-alicante-espana)
levitra generico precio en farmacias espana con reveta (https://www.grupopenascal.com/2020/11/16/levitra-generico-precio-en-farmacias-espana-con-reveta)
compra de viagra online (https://www.grupopenascal.com/2020/11/16/compra-de-viagra-online)
comprar cialis en farmacia andorra (https://www.grupopenascal.com/2020/11/16/comprar-cialis-en-farmacia-andorra)
comprar remedio de viagra em espanhol (https://www.grupopenascal.com/2020/11/16/comprar-remedio-de-viagra-em-espanhol)
super cialis espana (https://www.grupopenascal.com/2020/11/16/super-cialis-espana)

supperchon
24-07-2021, 12:55 PM
fractura cabeza del radio cialis espana envio 24h (http://fisioterapiapatriciapena.com/tag/hipopresivos-granada/)
fisioterapeutas en granada comprar viagra espana (http://fisioterapiapatriciapena.com/2020/09)
magnesoterapia bajar escaleras con muletas (http://fisioterapiapatriciapena.com/las-bolas-chinas-lo-que-debes-saber/)
protectomia fractura de cabeza de radio (http://fisioterapiapatriciapena.com/las-bolas-chinas-lo-que-debes-saber/)
comprar viagra online contrareembolso accidente en granada (http://fisioterapiapatriciapena.com/estiramiento-lumbalgia-y-ciatica-clinica-fisioterapia-granada/)
comprar viagra fractura cabeza de radio (http://fisioterapiapatriciapena.com/despues-de-dar-a-luz/)
clases para embarazadas cenforce 100 opiniones (http://fisioterapiapatriciapena.com/tag/lucia-martinez-padel/)
gimnasia para embarazadas articulos interesantes (http://fisioterapiapatriciapena.com/entrevista-mariola-toro-radio-la-mega-fm/)
fisioterapia granada precios rotura codo (http://fisioterapiapatriciapena.com/tag/especialista-espalda-en-granada/)
masajes granada higiene postural en el colegio (http://fisioterapiapatriciapena.com/programa-preparacion-al-parto-embarazo-saludable/)

knnhubi
23-01-2023, 02:18 AM
https://t.me/pump_upp - best crypto pumps on telegram
Make 1000% and more within 1 day, join channel @pump_upp !