PDA

View Full Version : Cho hỏi về tham số của cổng COM


cndragon
07-05-2009, 12:02 AM
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.

namqn
07-05-2009, 04:32 AM
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,

cndragon
07-05-2009, 05:19 PM
Mình chưa hiểu cái tham số cuối: stop bits có giá trị 1 nghĩa là sao?

TANDEM
16-05-2009, 02:13 AM
Là khoảng dừng giữa các byte có giá trị là 1 hoặc 2 bit

thienkien
29-05-2009, 07:49 PM
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)

minhtrung2002dn
20-06-2009, 09:42 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 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
22-06-2009, 07:29 PM
Để 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.

ThaoBinh90
24-06-2009, 11:03 AM
thienkien đang hỏi, minhtrung2002dn chen ngang vô duyên => topic này sẽ đi về đâu?