PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 01-07-2010, 12:54 PM   #1
mrliang87
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 3
:
Chào anh Bắc!Em đang làm đồ án TN về bảng báo giá ngoại tệ.Giao diện VB em đã làm OK nhận đc dữ liệu từ Internet về rồi.Nhưng phần giao tiếp với VXL thì chưa làm đc.Dữ liệu truyền đc qua RS232 nhưng không hiểu sao không hiển thị ra Led 7 đoạn đc.Anh có mẹo gì ko chỉ em với^^.Nếu đc anh cho em xin nick yahoo của anh để em có thể hỏi kĩ hơn nha.Thanks!
mrliang87 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-09-2010, 04:48 PM   #2
killua142
Nhập môn đệ tử
 
Tham gia ngày: Jun 2010
Bài gửi: 7
:
-Giúp mình Gửi dữ liệu dạng BINARY trong VB6 với !

-Em muốn gửi dữ liệu xuống VDK từ VB6 dạng binary nhưng send thì toàn bị lỗi cả,có ai bít giúp em với :

Private Sub Command2_Click()
On Error GoTo connectfalse
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
Exit Sub
connectfalse:
MsgBox "Loi Connect"
End Sub

Private Sub Command1_Click()
On Error GoTo sendfalse
Dim BytesToSend(0) As Byte
Dim Buffer As Variant

BytesToSend(0) = &H4A



Buffer = BytesToSend(0)
Text3.Text = Buffer

MSComm1.Output = Buffer


Exit Sub
sendfalse:
MsgBox "Loi Send"

End Sub



Private Sub Form_Load()

With MSComm1
.Settings = "9600,N,8,1"
.RThreshold = 2
.SThreshold = 0
.InBufferSize = 1024
.OutBufferSize = 1024
.InputMode = comInputModeBinary
.ParityReplace = ""
.CommPort = 1

End With
End Sub

Private Sub MSComm1_OnComm()
Dim BytesReceived(0) As Byte
Dim Buffer As Variant

If MSComm1.CommEvent = comEvReceive Then

Buffer = MSComm1.Input

BytesReceived(0) = Buffer
Text2.Text = BytesReceived(0)
End If
End Sub
killua142 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-07-2010, 12:43 PM   #3
blackangel
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 4
:
anh bac ah,em dang lam quang bao giao tiep voi may tinh. anh cho em hoi la neu tren vb minh danh chu a, va tao ma led de truyen xuong pic thi duoi pic co can ma led chu a nua khong, no co so sanh voi data truyen tu pc xuong khong.em chi truyen mot chieu tu pc xuong pic thoi.
mong hoi am cua anh.
cam on anh nhieu
blackangel vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-09-2010, 07:12 PM   #4
buitung31051989
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 1
:
các bác cho em hoi tý

em đang làm về phần truyền thông con pic 16F877A với máy tính nhưng không rõ lắm về cổng truyền thông của nó lắm
có phải là 2 chân 25 và 26 của nó không akj
buitung31051989 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-09-2010, 03:19 PM   #5
newboystylew
Đệ tử 1 túi
 
Tham gia ngày: Oct 2008
Bài gửi: 19
:
Pic 16F877A giao tiếp port nối tiếp thông qua 2 chân C6 và C7. Mính cũng có 1 số đề tài giao tiếp gia Pic 16F877a với máy tính.If cai cần thì liên hệ.nick:hoangdtvt07b@yahoo.com.vn
newboystylew vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-09-2010, 12:12 PM   #6
hoanglongvnu
Nhập môn đệ tử
 
Tham gia ngày: Mar 2010
Bài gửi: 1
:
Mọi người cho e hỏi tí!

Hiện tại e đang làm đồ án tốt nghiệp về đề tài truyền thông sử dụng vdk PSoC, trong đó có phần xây dựng giao diện truyền thông giữa PSoC và PC thông qua RS232. E dùng VC++ để làm, e cũng có tham khảo tutorial của a Bắc và đã xây dựng được cơ bản vấn đề truyền nhận đơn giản. Bây giờ e muốn hiển thị chuỗi nhận được trên giao diện ở dạng hex và cả dạng string, nhưng ko biết làm thế nào để chuyển string nhận sang kiểu hex.
Vậy mong các bác chỉ bảo e với.
hoanglongvnu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-09-2010, 11:20 PM   #7
ltn138
Đệ tử 1 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 14
:
có bác nào bit giao tiếp RS232 trên PC bằng visual C chỉ em với
ltn138 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2010, 09:58 AM   #8
minhbien
Nhập môn đệ tử
 
Tham gia ngày: Sep 2009
Bài gửi: 2
:
@killua: tui góp ý bạn 1 chỗ, hình như ở mấy trang đầu anh Bắc có nói rồi thì phải:

Private Sub Command1_Click()
On Error GoTo sendfalse
Dim BytesToSend() As Byte
Dim Buffer As Variant

BytesToSend(0) = &H4A
BytesToSend(1) = &H01

Buffer = BytesToSend()

MSComm1.Output = Buffer

Hoặc:

Private Sub Command1_Click()

Dim Buffer As Variant
Buffer = Text3.Text
MSComm1.Output = Buffer

Cái này có vẻ nhanh hơn... hổng biết đúng hông nữa , hình như dữ liệu truyền đi phải là kiểu mảng hoặc ký tự thì phải... còn Variant là all type
minhbien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2010, 08:11 AM   #9
TheHouse
Đệ tử 1 túi
 
Tham gia ngày: Feb 2010
Bài gửi: 13
:
Mọi người xem giúp, đoạn code C viết cho PIC 16F877a gửi dữ liệu lên PC & gửi từ PC về VDK mình làm hoài mà không chạy. Lúc nạp hay bị báo lỗi nữa chứ.

Đây là đoạn code gửi dữ liệu từ VDK lên PC, code trên PC mình lấy từ mấy bài hướng dẫn trên forum. Mà vẫn không thấy động tĩnh gì cả. Rồi từ PC gửi xuống cũng vậy.
Code:
#include <16f877a.h>
#use delay (clock=20000000)
#use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
#byte portb=0x06
#byte trisb=0x86
#byte portc=0x07
#byte trisc=0x87


void main()
{
trisb=0;
while(true)
{
   portb = 0x00;
   putc(0x00);
   delay_ms(100);
   portb = 0xff;
   putc(0xff);
   delay_ms(100); 
}
}

Code trên PC:
Code:
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()
    Dim Buffer As Variant
    If MSComm1.CommEvent = comEvReceive Then
        Text1.Text = Text1.Text + MSComm1.Input
    End If
End Sub
Vừa chạy thực tế, vừa chạy trên mô phỏng, nên mình có chuyển đổi qua lại giữa COM 4 & COM 1
TheHouse vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-05-2011, 10:57 AM   #10
c4dt1
Nhập môn đệ tử
 
Tham gia ngày: Dec 2010
Bài gửi: 1
:
kính chào các bác trên diễn đàn
em mới nhập môn,nên em không biết làm thế nào để VB nhận 1 kí tự và hiển thị kí tự đó dưới dạng số thập phân.từ 8051 em truyền lên 0x31,đáng lẽ VB nhận và hiển thị số 1 trong txtnhan.text =1;nhưng mà nó cứ hiện cái j đâu ấy,em cấu hình mscoom1.inputmode=0 tức là Ascci ,vậy có bác nào biết thì chỉ giáo cho em vài đường
c4dt1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-07-2011, 01:34 AM   #11
hangocminh1989
Đệ tử 6 túi
 
Tham gia ngày: Apr 2009
Bài gửi: 132
:
các bác ơi, bác nào biết là tại sao em truyền dừ liệu từ pic lên máy tính thì em chỉ truyền được tới 255 thôi, 256 là nó sai bét.....em truyền số 999 nó hiển thị thành số 231, số 998 nó lại hiện thành 230, nhưng số 1000 thì nó lại hiển thị đíng 1000. chả hiểu cái quái gì chỗ này cả. em đã tách từng số ra trong chuỗi rồi em mơi truyền lên máy tính, bác nào biét chỉ em cách xử lí cái chỗ này với, hic
hangocminh1989 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-07-2011, 10:23 AM   #12
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi hangocminh1989 View Post
các bác ơi, bác nào biết là tại sao em truyền dừ liệu từ pic lên máy tính thì em chỉ truyền được tới 255 thôi, 256 là nó sai bét.....em truyền số 999 nó hiển thị thành số 231, số 998 nó lại hiện thành 230, nhưng số 1000 thì nó lại hiển thị đíng 1000. chả hiểu cái quái gì chỗ này cả. em đã tách từng số ra trong chuỗi rồi em mơi truyền lên máy tính, bác nào biét chỉ em cách xử lí cái chỗ này với, hic
bạn khai báo biến chứa giá trị 999 là biến 8bit hay 16bit.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2011, 02:37 AM   #13
hein_ts
Đệ tử 6 túi
 
Tham gia ngày: Feb 2011
Bài gửi: 156
:
Cũng lạ nhỉ? Bạn nên gửi code lên để mọi người cùng xem chứ?
hein_ts vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-07-2011, 11:53 PM   #14
diode1
Nhập môn đệ tử
 
Tham gia ngày: Jan 2011
Bài gửi: 7
:
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
diode1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-11-2011, 12:21 PM   #15
langtudat87
Nhập môn đệ tử
 
Tham gia ngày: Oct 2011
Bài gửi: 1
:
Trích:
Nguyên văn bởi ngohaibac View Post
Chào các bạn.

Mình mở luồng này để hướng dẫn các bạn lập trình giao tiếp RS232 bằng phần mềm Visual Basic 6.0 của Microsoft.

Do site tailieuvietnam.net đang có vấn đề về nhỏ nên mình không upload file lên đó được. Tuy nhiên mình vẫn upload chương trình viết bằng VB để các bạn tham khảo.

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



Hình 1: Giao diện chương trình đơn giản thứ 1 dùng VB.

Chương trình này là một ví dụ nhỏ bạn truyền một loạt byte rùi nhận về (mình nối 2 chân 2 và 3 để test chương trình). Các bạn có thể ứng dụng nó trong mạng truyền thông dùng các giao thức truyền khác nhau. Trong ví dụ của mình truyền đi 11 byte gồm 1 byte start, 8 byte dữ liệu, 1 byte CRC, 1 byte stop.

Chúc các bạn thành công.
cai nay truyen duoc 2byte nhung minh muon truyen 8byte thi nhu the nao mong cac ban giup do
Option Explicit
Dim Send_Data As String
Dim ket_noi As Integer
Dim Hbyte As Integer
Dim Lbyte As Integer
Dim arr() As Byte


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

Private Sub cmdClose_Click()
Unload Me
End Sub

Private Sub Form_Load()
'If MSComm1.PortOpen Then MSComm1.PortOpen = False
'With MSComm1
'.CommPort = 1
'.Settings = "9600,n,8,1"
'.RThreshold = 3 'so byte truyen
'.PortOpen = True
'End With
If MSComm1.PortOpen Then MSComm1.PortOpen = False
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 3
MSComm1.InputMode = comInputModeBinary
MSComm1.InBufferCount = 0
MSComm1.PortOpen = True
Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub cmdSend_Click()
Send_Data = Trim(Text1.Text)
Hbyte = Send_Data \ 256
Lbyte = Send_Data Mod 256
MSComm1.Output = Chr(Hbyte) & Chr(Lbyte) & Chr$(13)
'MSComm1.Output = Send_Data & Chr$(13)
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
Dim rcv
If MSComm1.CommEvent = comEvReceive Then
arr() = MSComm1.Input
'If (arr(2) = 255) Then
Text2.Text = arr(0) * 256 + arr(1)
'End If
End If
End If
End Sub
langtudat87 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Tags
forms!nhap!vao = x

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Giao tiếp RS232 trên PC ngohaibac Giao tiếp cổng COM và LPT 193 18-02-2025 09:11 AM
Cho hỏi về giao tiếp RS232 của PIC16F877A enti Giao tiếp cổng COM và LPT 31 25-03-2016 10:14 PM
Giao tiếp RS232 trên PC qua Matlab ngohaibac Giao tiếp cổng COM và LPT 47 18-11-2015 03:51 PM
cần mua bộ thu GPS có giao tiếp RS232 kienvq Tìm mua sản phẩm 15 17-03-2011 11:25 PM
Help! Dùng C để giao tiếp RS232 dandiennang Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 6 15-03-2009 06:41 PM


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam