Chủ đề: Chương trình Chat qua cổng COM.
-
03-11-2010, 09:09 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chương trình Chat qua cổng COM.
Vừa rồi mình có học xong môn thiết bị ngoại vi và ghép nối,thực sự thì môn này hay nhưng do cơ chế trường mình dạy cuốn chiếu quá, nên cũng không có time nghiên cứu kỹ.Thầy giáo có cho bài tập về nhà là: 1: Viết chương trình chát qua cổng COM. 2: Viết code nhúng vào chương trình chơi game teris để sử dụng được joytick. Mình chỉ làm được bài 1 còn bài 2 thì do không chơi game có dùng joystick bao giờ nên không rõ.
Bài viết này của mình đưa ra nhằm giúp bạn nào cũng đang học về vấn đề này hiểu rõ hơn và tự tay xây dựng được chương trình chát qua cổng COM.
Trước hết để sử dụng được chương trình này thì bạn cần phải có phần mềm tạo cổng COM ảo hoặc dùng dây cáp kết nối 2 máy tính qua cổng COM lại với nhau. Ở đây do không có điều kiện nên mình dùng phần mềm tạo cổng COM ảo là: Advanced Virtual COM Port. Hướng dẫn dùng phần mềm này thì mình sẽ upload vào file riêng, các bạn tải về, giải nén và xem hướng dẫn, do mình không biết upload ảnh vào bài viết.
Code của chương trình mình sẽ upload phía dưới.
Giờ thì mới là mục đích chính nè! Lập trình ghép nối cổng COM
A:Các bước lập trình
1: Kiểm tra sự tồn tại và trạng thái của các cổng COM có trên máy tính.
2:Lập trình thiết lập các thông số kết nối.
3:Lập trình đóng mở cổng COM.
4:Lập trình thực hiện việc gửi, nhận dữ liệu qua cổng COM.
4.1:Gửi dữ liệu qua cổng COM.
4.2: Bắt dữ liệu nhận được từ cổng COM khi có sự kiện comEvReceive.
Chúng ta sẽ sử dụng ngôn ngữ C# với .Net để làm công việc này.
.NET cung cấp cho ta công cụ SerialPort. Chi tiết về thằng này các bạn đọc trong MSDN, ở đây mình chỉ đưa ra những gì cần thiết cho bài viết này.
Từ các bước lập trình ở trên, công việc của chúng ta phải là sẽ là:
1: Sử dụng hàm GetPortNames để lấy về danh sách tất cả các cổng COM trên máy tính.
Mã://Ham lay danh sach cac cong COM trong may tinh. public void ListPortCOM() { foreach (string cong in SerialPort.GetPortNames()) { cbbPort.Items.Add(cong); } }
_Nếu mở cổng có lỗi thì chứng tỏ cổng đó đã được mở.
_Nếu mở cổng thành công thì cổng đó vẫn chưa được mở và ta có thể sử dụng cổng này.
Mã://Ham mo cong. public void OpenPort() { if (cbbPort.Text == "") MessageBox.Show("Bạn chưa chọn cổng!"); else { try { if (comport.IsOpen == true) { comport.Close(); MessageBox.Show("Đã đóng cổng thành công"); btnOpenPort.Text = "Mở cổng"; } else { comport.PortName = cbbPort.Text; comport.Open(); MessageBox.Show("Đã mở cổng thành công."); btnOpenPort.Text = "Đóng cổng"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } }
Sau khi các bạn kéo thành phần SerialPort vào Form, các bạn chỉnh thuộc tính của nó như sau.
_Baudrate:Tốc độ(9600 hoặc tùy)
_Databits: Số bit data.(8)
_Parity: Bit kiểm tra chẵn lẻ.(None).
_PortName:Số hiệu cổng COM.
+Để đóng mở cổng COM cần dùng 2 phương thức : Open và Close.
+Sử dụng thuộc tính IsOpen để kiểm tra trạng thái của cổng COM.
+Gửi dữ liệu qua cổng COM: Sử dụng phương thức Write của đối tượng SerialPort.
+Nhận dữ liệu qua cổng COM
_Tạo hàm bắt sự kiện khi có dữ liệu nhận về qua cổng COM.
serialPort1.DataReceived +=new SerialDataReceivedEventHandler(OnReceive);
_OnReceive:Hàm thực thi việc nhận dữ liệu và xử lý dữ liệu
+Đọc dữ liệu sử dụng các phương thức.
.Read
.ReadExisting
.ReadLine
Lưu ý:
Các bạn tải chương trình mình upload lên và chạy nhé!
Tuy nhiên chương trình có khiếm khuyết, các bạn dùng sẽ biết, hãy khắc chế cho tốt, rồi vào diễn đàn góp ý cho mình nhé!View more random threads:
- Chuyển 1 chuỗi sang Tittle Case hoặc ProperCase trong lập trình C#
- Kỹ Thuật Nhận Dạng Chữ Viết Tay - Phương pháp và các thực hiện trên C#
- Video hướng dẫn Jquery call ajax C#
- Hướng dẫn lấy địa chỉ IP và các thông tin liên quan
- Tạo control có hình dạng như ý muốn
- Tạo Full Screen Form trong lập trình C#
- [GẤP] Lỗi report
- Hướng dẫn tạo SlideShow tin nổi bật
- Mong các bạn giúp đỡ thuật toán A* tìm nhiều đường đi từ 1 điểm đến 1 điểm
- Hướng dẫn đọc và ghi file XML một cách cực kỳ đơn giản
-
04-11-2010, 09:44 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chương trình đó vẫn chưa được tốt lắm, không có bạn nào cùng đang học cái đó hay đã học rồi góp ý kiến à? Để chát trong mạng Lan thì bạn tìm hiểu về lập trình mạng với C# nhé! Forum mình có nhiều bài viết nói về nó rồi.Bản thân mình cũng đã có 2 bài viết về nó, bạn tìm sẽ thấy.
-
04-11-2010, 02:38 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình đã down về chương trình của bạn! Rất hay! Mình mới học C# Console chưa đến WinForm nên cũng ko hiểu nhiều!
Cho mình hỏi thêm về Chương trình 1 chút!
Làm thế nào để 1 người bên máy khác chat với mình trong mạng Lan???
-
08-06-2012, 08:03 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình bị lỗi, ko lấy được dữ liệu từ cổng com, mình lấy chương trình chát của bạn, mình dùng để lấy số cân điện từ nhà mình, hiện được cổng com, mở port thành công, mà dữ liệu ko hiện lên chỉ hiện dấu chẩm hỏi, và mình debuff thì data là "\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0 ?\0? \0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0 ?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\ 0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0? \0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0 ?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\ 0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0? \0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0 ?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\ 0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0? \0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0 ?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\ 0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0? \0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0 ?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\ 0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0? \0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0 ?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\ 0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0 \0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\ 0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0 \0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\ 0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0 \0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\ 0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0? \0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0 ?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\ 0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0 \0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\ 0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0??? \0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0?? ?\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0? ??\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0 ???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\ 0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0? \0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0 ?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\ 0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0?? \0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0? ?\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0 ??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\ 0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0?? \0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0? ?\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0 ??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\ 0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0 \0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\ 0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0 \0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\ 0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0 \0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\ 0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0? \0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0 ?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\ 0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0? \0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0 ?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\ 0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0? \0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0 ?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\ 0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0? \0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0 ?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\ 0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0? \0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0 ?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\ 0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0? \0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0 ?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\ 0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0 \0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\ 0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0 \0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\ 0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0 \0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\ 0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0? \0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0 ?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\ 0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0 \0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\ 0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0??? \0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0?? ?\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0? ??\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0 ???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\ 0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0? \0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0 ?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\ 0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0?? \0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0? ?\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0 ??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\ 0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0?? \0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0? ?\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0 ??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\ 0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\0 \0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0\ 0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\0 \0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0\ 0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\0 \0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0?\ 0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0? \0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\0 ?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0?\ 0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0? \0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\0 ?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0?\ 0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0? \0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\0 ?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0?\ 0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0? \0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\0 ?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0?\ 0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0? \0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\0 ?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0?\ 0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0? \0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\0 ?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0\ 0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\0 \0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0\ 0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\0 \0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0\ 0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\0 \0\0\0?\0?\0?\0?\0?\0?\0\0\0\0??\0??\0?\0???\0\0?\ 0\0\0\0?\0?\0?\0?\0?\0?\0\0\0\0?"
các bạn cai biết ko giúp mình với
-
08-06-2012, 06:34 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
//Ham lay danh sach cac cong COM trong may tinh.
public void ListPortCOM()
{
foreach (string cong in SerialPort.GetPortNames())
{
cbbPort.Items.Add(cong);
}
}
Tôi đang làm 1 module nhỏ về gửi SMS từ hệ thống Website tới điện thoại sử dụng tập lệnh ATCommand có 1 hàm Load cổng COM để thao tác.
Ở hàm trên làm thế nào mình lọc ra được đúng cổng mình cần thao tác
chẳng hạn khi tôi căm 1 USB 3G vào thì hàm trên Load ra những 3 cổng trong đó chỉ có 1 cổng mình cần lấy, làm sao lọc được ra cổng mình cần thao tác hả các bác
-
02-05-2013, 07:50 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn set Enabled timer1 = true,sau đó trong Event timer1_Tick bạn thêm vào đoạn code sau là nó tự nhận dữ liệu
if (comport.IsOpen)
{
string data = comport.ReadExisting();
if(data.Trim() != "")
lstDisplay.Items.Add("Khách:" + data);
}
-
07-05-2016, 10:40 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
COde của mình đọc thế này
Dim stringData As String = ""
Dim stepOver As Integer = 0
Do While (SerialPort1.BytesToRead > 0)
Dim charcode As Byte = Convert.ToByte(SerialPort1.ReadByte)
If charcode = 10 Then
stepOver += 1
End If
If ((charcode <> 10) AndAlso (charcode <> 13)) Then
stepOver = 0
End If
stringData &= Convert.ToString(Strings.ChrW(charcode))
If stepOver = 3 Then
lbldl.Text = stringData
End If
Loop
Khi in ra chỉ hiển thị được đoạn cuối của dữ liệu,
nhưng khi mình debug từng dòng code thì đọc được toàn vẹn dữ liệu
Mong các bạn giúp
-
07-05-2016, 05:59 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chương trình này không xài tiếng Việt được - chỉ dùng chữ Việt khong dau kiểu Tây thôi
Với sự đa dạng và phong phú về mẫu mã và giá cả, choxeonline.vn hứa hẹn sẽ là địa chỉ tin cậy cho những ai đang tìm kiếm chiếc xe ô tô ưng ý. Từ những mẫu xe hạng sang đến những chiếc xe gia đình...
Khám Phá Đa Dạng Sản Phẩm Xe Ô Tô...