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 07-05-2009, 12:02 AM   #1
cndragon
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
Question Cho hỏi về tham số của cổng COM

Mình thấy tham số của cổng COM là: 9600,8,N,1;
mình chỉ biết 9600 là tốc độ truyền của cổng COM, vậy 3 tham số còn lại có ý nghĩa gì mong các bạn chỉ dùm.
cndragon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-05-2009, 04:32 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi cndragon View Post
Mình thấy tham số của cổng COM là: 9600,8,N,1;
mình chỉ biết 9600 là tốc độ truyền của cổng COM, vậy 3 tham số còn lại có ý nghĩa gì mong các bạn chỉ dùm.
- Tham số thứ hai là số bit dữ liệu của ký tự, có thể có các giá trị nguyên từ 5 đến 9
- Tham số thứ ba là kiểu chẵn lẻ (parity), N có nghĩa là không dùng parity (còn có các giá trị khác là Odd, Even, Mark, và Space)
- Tham số cuối cùng là số stop bits, có thể có các giá trị 1, 1.5, và 2

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-05-2009, 05:19 PM   #3
cndragon
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
Mình chưa hiểu cái tham số cuối: stop bits có giá trị 1 nghĩa là sao?
cndragon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-05-2009, 02:13 AM   #4
TANDEM
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 40
:
Là khoảng dừng giữa các byte có giá trị là 1 hoặc 2 bit
TANDEM vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-05-2009, 07:49 PM   #5
thienkien
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 7
:
mình có câu hỏi mong anh Nam và các bạn giúp đỡ: truyền và nhận qua rs232 , pic 18f4550 , nếu mình khai báo xung clock=10M( bằng thạch anh thực) thì chính xác!
nhưng khi khai ép xung thạch anh lên 40M (hspll,pll4) thì nhận không chính xác( co lẽ là sai baurate) .Mình muốn hỏi là có cần tính lại baurate không?( viduj 9600*4 hay 9600/4 chẳng hạn!!!!???) các bạn giúp mình gấp gấp nhé!!!cảm ơn. â( chương trình gửi có thiết lập cổng Com: baurate=9600)
thienkien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2009, 09:42 PM   #6
minhtrung2002dn
Nhập môn đệ tử
 
Tham gia ngày: May 2009
Bài gửi: 5
:
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 xuống đầu cân như thế nào 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
minhtrung2002dn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-06-2009, 07:29 PM   #7
minhtrung2002dn
Nhập môn đệ tử
 
Tham gia ngày: May 2009
Bài gửi: 5
:
Để 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.
minhtrung2002dn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2009, 11:03 AM   #8
ThaoBinh90
Đệ tử 1 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 19
:
thienkien đang hỏi, minhtrung2002dn chen ngang vô duyên => topic này sẽ đi về đâu?
ThaoBinh90 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ð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


Múi giờ GMT. Hiện tại là 02:49 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