Chào các bạn.
Để cho website của mình thêm phong phú, nên mình cập nhật thêm một số tài liệu mà mình đã viết ở các diễn đàn điện tử. Có thể bản quyền vẫn thuộc về diễn đàn, nhưng mình nghĩ đây chỉ là sự chia sẻ cho những người chưa biết, chưa hiểu sâu về vấn đề đó nên chắc là cũng không có vấn đề gì.
Đây là TUT mình viết từ năm thứ 3 trong chương trình đào tạo Moderator của www.picvietnam.com, hướng dẫn viết chương trình giao tiếp máy tính qua cổng RS232 bằng ngôn ngữ Visual C++ 6.0. Đã có nhiều thảo luận về vấn đề giao tiếp nối tiếp tại 2 diễn đàn:
Ngô Hải Bắc, Serial Port - lập trình giao tiếp nối tiếp, www.dientuvietnam.net, 2005
Ngô Hải Bắc, Giao tiếp RS232 trên PC bằng Visual Basic 6.0, www.dientuvietnam.net
Phạm Thái Hòa, Terminal - chương trình cực cool để test cổng COM, www.dientuvietnam.net
Ngô Hải Bắc, Giao tiếp RS232 trên PC qua Matlab, www.picvietnam.com
Ngô Hải Bắc, Giao tiếp RS232 trên PC, www.picvietnam.com
Mình xin gửi các bạn Tutorial này.

Các bài viết liên quan:
- Lập trình giao tiếp RS232 qua Matlab Chào các bạn. Mình xin tổng hợp lại một số bài viết của mình về lập trình giao tiếp RS232 trên PC bằng phần mềm Matlab. I. Đối tượng Serial Object Việc giao tiếp này cũng rất dễ dàng thực hiện, không có gì là quá cao siêu cả. Mình đã giao tiếp thành công [...]...
- Thư viện giao tiếp RS232 cho PIC18 bằng HTPIC18 Đây là thư viện viết cho vi điều khiển PIC dòng PIC18 bằng HTPIC. Thư viện được tạo dựa vào Datasheet của PIC18. Đã test với PIC18F4680, PIC18F4431 File Header: UART.h // UART.h //============================ #ifndef _UART_H #define _UART_H //============================= #include "pic18.h" #include "sysdef.h" //============================= // Declare sosme functions void UART_Init(unsigned int BaudRate); // Initialize for [...]...
- Quản lý và build Project với trình dịch HTPIC bằng Visual C++.Net 2005 Chào các bạn. Bài này mình viết lâu rồi nhưng thấy rất hay nên post lại cho các bạn. Các bạn dùng qua Visual C++ 6.0 và Visual C++.Net đều thấy tác dụng quản lý Project và gợi ý code rất là hay. Khi dùng ta sẽ không sợ quên hàm này, hàm kia.Quản lý [...]...
- Lập trình giao diện GUI trong Matlab (Phần 1) Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các bạn dễ dàng thực hiện. Phần mềm: Matlab R2007a Bài đầu tiên mình sẽ giới thiệu các bạn giao diện GUI. 1. Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command >> [...]...
- Hướng dẫn lập trình C cơ bản đến nâng cao trên nền Unix Image via Wikipedia Các TUTs này không dài nhưng diễn tả đầy đủ những kiến thức cần thiết để tự học lập trình C với các trình biên dịch thông dụng GCC, cách tạo makefile, lập trình đa nhiệm multithread, ... Trang web này cũng là địa chỉ tham khảo của nhiều lập trình viên [...]...
- Video hướng dẫn lập trình GUI: tạo 1 máy tính đơn giản Chào các bạn. Sau một thời gian dùng Matlab, cũng như trả lời trao đổi của các bạn dùng Matlab để tạo giao diện ứng dụng để báo cáo đề tài, luận văn, ... Vì thế, mình dự định là sẽ tự thu một vài video tutorial hướng dẫn cách lập trình, cũng như một [...]...



{ 28 comments… read them below or add one }
chào anh, em đang làm một BTL môn KT vi xử lý, em đang bí phần giao tiếp qua cổng COM. BTL làm led matrix. Về mạch thì em đã làm được, nếu add code điều khiển trực tiếp vào 89c51 thì đèn đã sáng và có thể hiện chữ cố định.
Nhưng hiện tại em đang cần 1 chương trình để điều khiển hiện chữ đó, tức là software cho phép nhập chữ và khi nhập chữ thì led hiển thị chữ đó. Em không biết phải lập trình cho chip như thế nào để nó có thể nhận dạng được tín hiệu gửi vào để điều khiển các chân khác.
Hiện tại ý tưởng của em là chip nhận 1 tín hiệu gì đó sau đó tương ứng tín hiệu đó sẽ truyền giá trị cho các chân khác
VD : máy tính truyền chữ ‘a’, max232 chuyển thành tín hiệu bit, chân RxD nhận tín hiệu và so sánh với 1 loạt điều kiện, đúng là chữ ‘a’ thì sẽ cho thực hiện câu lệnh hiển thị chữ a lên led matrix.
Mạch như sau :
Mình muốn viết chương trình bằng ngôn ngữ C nhận dữ liệu qua cổng com. Bạn có thể cho mình biết các hàm có liên quan được không? Chứ viết bằng VB thì dễ quá nhưng ứng dụng nó vào thực tiễn liên kết các chương trình lớn thì không nhiều!
Chờ thư bạn.
Cảm ơn!
Em đã cho giao tiếp được giữa PC và 89c51 qua max232, nhưng em không biết giá trị của biến nhậnn được như thế nào để xử lý tiếp.
Về máy tính em dùng C#, sử dụng hàm serialPort1 .WriteLine (textBox1.Text); để gửi 1 chữ cái đi.
Về VXL thì em viết = C :
void receive_data() interrupt 4{ if(RI==1){
RI=0;
uart_data_receive=SBUF;
}}
nhưng em không biết sau khi nhận thì uart_data_receive có giá trị như thế nào để thực hiện tiếp lệnh : if(uart_data_receive==’a') P1_7=0×00;
———————
Ngoài ra, với hàm gửi dữ liệu của VXL :
void send_data(char uart_data)
{
TI=0;
SBUF=0x00;
SBUF=uart_data;
while(TI==0){}
TI=0;
}
main()
{ dataa='a';
send_data(dataa);
}
và hàm nhận của C# :
serialPort1.DataReceived += new SerialDataReceivedEventHandler(dulieuden);
private void dulieuden(object sender, SerialDataReceivedEventArgs e)
{ data = "";
data = serialPort1.ReadExisting();
textBox2.Text = data;
}
thì textbox2 toàn ra dấu ‘?’ hoặc ‘&’
————————————–
Anh chỉ cho em 2 vấn đề này với.
Mạch nối của em như sau :
http://img508.imageshack.us/img508/1192/machmi4.jpg
Anh à, em đang tìm hiểu về tập lệnh AT, em không biết cách truy xuất những dòng lệnh AT này ra cổng COM như thế nào để co1 thể truyền ra modem , để em có thể gửi và nhận tn nhắn.
Nếu anh có tài liệu hay bài viết nào hay thì giới thiệu cho em với, để em có thể xem tham khảo. Cám ơn anh rất nhìu !!!!!!!!!!!!!!!!!1
Chào Anh! Em cũng đang muốn tự mình làm giao tiếp máy tính với Vi điều khiển để truyền và nhận dữ liệu, nhưng tự tìm hiểu thấy khó quá.Em cũng không hiểu đoạn mã sau trong VB6 viết thế là như thế nào?Và nếu mình sử dụng nó thì phải đặt vào đâu trong VB.Mong được sự giúp đỡ của Anh!
Em copy đoạn Code này vào nhưng không biết nhét vào đâu.
VERSION 5.00
Begin VB.Form Form1
Caption = “Printer Interface Example”
ClientHeight = 4665
ClientLeft = 60
ClientTop = 345
ClientWidth = 3585
LinkTopic = “Form1″
ScaleHeight = 4665
ScaleWidth = 3585
StartUpPosition = 3 ‘Windows Default
Begin VB.CommandButton cmdReceive
Caption = “Receive”
Height = 495
Left = 1200
TabIndex = 18
Top = 3960
Width = 1095
bác giúp em với,viêt chương trình cho việc: kết nối cổng Com của máy tính với với 1 cổng nào đó của vi điều khiển họ 8051 để truyền dữ liệu từ máy tính gửi xuống. .
em có sơ đồ mạch trên protues7.1 rồi nhưng thiếu đoạn code để cho chạy nữa thôi., và cho em đọan code 8051 truyền dữ liệu lên máy tính để em so sánh, thanks nhiều
http://www.mediafire.com/?nmttkmm454z
sơ đồ mạch ở đây.
Cho tôi gửi lời cảm ơn đến anh đã giúp đỡ mọi người rất nhiều.
Tôi có 2 vấn đề khi làm theo chỉ dẫn của anh (TUT01.03.PVN.NOHB.100106.pdf):
1. com port không đóng khi nhấn nút Exit (máy tôi không có cổng com nên dùng com ảo, chuyển đổi từ USB sang COM)
2. nối tắt chân 2 và 3 của cổng COM cũng không nhận được gì.
Anh vui lòng giải thích dùm.
Cảm ơn anh
Làm sao để gửi cho anh source để anh xem giúp nhỉ?
em chào anh Bắc em đang làm mạch về led ma trận có thể giao tiếp được với máy tính mạch của em dùng con 89s52 ma trận led 8*8 có thể dùng tới 5 ma trận em chưa có tài liệu nào anh có thể giúp em chứ ạ
nếu có tài liệu anh có thể gửi cho em ở địa chỉ: chirikatori.lonely@yahoo.com
em cảm ơn anh nhiều
anh Bắc ơi,up lại hộ em file TUT01.03.PVN.NOHB.100106.pdf, giúp em cái, em đang cần gấp,cám ơn anh nhiều,anh có thể gửi vào gmai hộ em ạ!
Hiện tại dientuvietnam.net và picvietnam.com đang bị down, để a xem lại máy anh xem để chỗ nào, rồi mới up lên lại cho em được em ạ. May quá, anh tìm lại được chỗ này: http://www.scribd.com/doc/6998882/TUT0103PVNNOHB
Em vào xem đi nhé.
Chúc em thành công.
How to do capture image in every 5 seconds from webcam by matlab
em cám ơn anh bắc nhiều nhé..
Không có gì em
Xin chao! Toi moi mua may cham cong van tay, trong do co day cong RS232 nhung toi ko the down dc du lieu thu may cham cong ve may tinh! toi da rap rap dung cong, neu su dung day cap mang va usb toi van down dc!may cham cong cua toi la smart tk-700fc! hay giup toi!cam on!
Bạn muốn giúp đỡ thế nào ?
minh dung Winxp! minh da co san day cổng COM232 nối thẳng vào máy chấm công!ko có thiết bị phụ trợ nào cả!mình muốn down dữ liệu về máy thì cần làm những bước ntn? Rất cảm ơn bạn!
xin chào anh Bắc.Em thấy anh rất rành về vi điều khiển đọc nhiều bài trên picvietnam và dientuvietnam em thấy anh còn rất rành về visual basic 6.Em muốn học hỏi anh 1 chút về phần giao tiếp giữa Pic và máy tính nhưng bằng visual basic 2005 hoặc 2008.Tìm rất nhiều lầm trên mạng nhưng ko ai chịu port bài hay hướng dẫn về phần này.
về Píc thì em tạm ổn rồi.chỉ còn chương trình VB là hơi mắc do không có tài liệu về vb2008 (phần giao tiếp)
Nếu anh có tài liệu học tập gì thì gửi cho em nhé.mail :minhphuong2004@gmail.com
cảm ơn rất nhiều.
Em chào anh !
Em đang làm đồ án về phần giao tiếp máy tính(dùng visual basic) với vi điều khiển để điều khiển van mở chất lỏng và giám sát quá trình hoạt động của van và hiển thị van hoạt động như thế nào trên máy tính.
Em đang ko biết làm như thế nào
Mong anh giúp em với
Em cảm ơn anh.
Anh Bắc cho em hỏi tý, em đang tạo một giao diện MFC trong Visual C++ 2008 để giao tiếp qua cỏng COM, tuy nhiên em lại không thấy biểu tượng mscomm control để đưa vào form cả, anh có thể giúp em đc không?
Chào anh Bắc!
Em đọc các bài viết của anh trên dientuvietnam về TUTRS232 của anh rất hay, em đã dựa theo ứng dụng của anh để làm một bài tập đơn giản hơn đó là truyền dữ liệu giữa PC và 89c51.
Cụ thể ứng dụng của em như sau: Khi bật điện thì trên editbox của giao diện hiển thị giá trị port1 của vdk lên, 2 led trên vdk tắt. Khi nhấn nút Led1 thì led1 trên VDK sáng, nhấn nút Led2 thì led 2 sáng và led 1 tắt. Em gửi được dữ liệu xuống để điều khiển 2 led sáng nhưng không gửi giá trị của port1 lên hiển thị trên PC được.
Em có gửi anh file mô phỏng proteus và file của VC++ với giao diện của nó. Em cũng gửi kèm chương trình tạo cổng com ảo để anh mô phỏng.
Anh xem qua và có thể cho em biết được chương trình của em bị sai ở chỗ nào nhé, nếu được anh sửa luôn giúp em.
Cám ơn anh thật nhiều.
PS: Anh giúp em với tại vì em đang chuẩn bị làm đồ án môn học 2 “Đo nhiệt độ và hiển thị trên PC dùng one wire”.
Đây là link:
http://www.mediafire.com/?ci68nyrbywyrtrv
http://www.mediafire.com/?d5uk35ayr669r7v
ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ TỪ XA (TRYUỀN VÀ NHẬN DỮ LIỆU )
I. Yêu cầu phần cứng:
Hệ thống được thiết kế gồm hai board mạch: board mạch phát gồm Module HM-TR/TTL giao tiếp với VI ĐIỀU KHIỂN và board mạch thu gồm Module HM-TR/232 giao tiếp với máy tính qua cổng COM DB9( chuẩn RS232).
II. Yêu cầu phần mềm:
Các phần mềm phải đảm nhiệm là trung tâm xử lý hệ thống, vận chuyển và lưu tín hiệu tam thời trên VĐK trong quá trình truyền và nhận.
III. Hướng giải quyết:
Em sẻ sử dụng phần mềm VISUAL BASIC để lập trình, để viết giao diện giao tiếp.
IV: Kết quả, tạo ra được một File.exe cài trên bất cứ máy tính nào cũng chạy được và thực hiện tốt việc giao tiếp của hai Module trên với máy tính.
Phần lập trình phần mềm VISUAL BASIC nhóm của Em chưa làm được.
XIN CÁC ANH HƯỚNG DẪN THÊM.
anh co tai lieu nao ve lap trinh vb de dieu khien led 7 doan khong anh.
Chào anh bắc!
Em viết chương trình giao tiếp avr với matlab. Em đã gửi được từ matlab đến AVR nhưng em gửi ngược lại để hiển thị trên gui của matlab thi không được.Mong anh sửa giúp em đoạn code này nhé.
function pushbutton1_Callback(hObject, eventdata, handles)
clear all;
s = serial(‘COM2′);
set(s,’BaudRate’,9600);
fopen(s);
b=fscanf(s);
set(handles.edit1,’String’,b);
fclose(s)
delete(s)
clear s
Em đang làm về Đếm và phân loại SP trắng và đen Giao tiếp PIC 16F877A voi PC sử dụng VB. Em đã truyền được dữ liệu lên PC nhưng hiển thị không đúng ,xin mấy huynh chỉ em hướng giải quyết. Đây là file gồm Chương trình , mô phỏng bàng proteus và VB. http://www.mediafire.com/?195d8sza5tcjubg
Huynh nào rảnh xem và chỉ em hướng giải quyết Mail của em : vuhoan_vu@yahoo.com
Chào Anh Bắc! Tụi em đang làm đồ án MatLab đề tài về tạo từ điển viễn thông.Anh có thể giúp tụi em viết code không.khâu tạo gui tụi em làm xong rồi mà viết code bị lỗi nhiều lắm.
Chào bạn.
Hướng dẫn của mình là viết trên Visual C++ mà bạn. Nếu bạn dùng C thì hơi khó chịu một chút, bởi vì không có thư viện để truy nhập vào RS232 bạn ạ. Ngày trước dùng Win98 thì có thể truy nhập thoải mái nhưng mà đến Windows XP hoặc cao hơn thì hơi khó.
Có 2 cách phổ biến là dùng MSComm active X hoặc dùng các hàm API.
Chúc bạn thành công.
Chào em.
Đơn giản thôi mà em. Em truyền các byte xuống và VDK sẽ so sánh thôi mà. Em cần nghiên cứu lại cơ chế truyền byte của UART nhé. Có 2 mode truyền là binary hoặc string.
Chúc em thành công.
Anh ơi em có một bài toán như sau anh thử xem có cách nào giúp đỡ em dc ko?
bọn em đang viết 1 chương trình bằng visual studio 2008 , viết trên c++ để điều khiển động cơ thông qua con VDDK.
Anh có thể chỉ cho em cách giao tiếp chương trình C++ gửi dữ liệu xuống cổng COM được khong ạh?
Cảm ơn anh
Mong sớm nhận được hồi âm của anh.