Mình đang viết môt chương trình chat giữa 2 PC qua cổng COM (RS232) của máy tính . Tham khảo trên này thì tìm được 1 đoạn code cơ bản , nhưng được hướng dẫn là phải nối 2 chân 2 và 3 của RS232 lại . Nhưng mình thắc mắc là nếu ta có 2 PC thật , dùng cáp nối 2 COM của 2 PC này, không nối 2 chân 2 & 3 thì ... chương trình còn chạy được không nhỉ vì đọc code chẳng thấy chỗ nào nói về nhận dữ liệu,toàn gửi. Ai đã làm thực tế thì giúp mình với.
Còn đoạn code dưới này là truyền file qua COM giữa 2 PC , mình cũng chỉ thấy có lệnh gửi file mà không có lệnh nhận file.
Code:
Private Sub cmdClear_Click()
Text1.Text = ""
Text2.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 = 1
.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
Còn đoạn code dưới này là truyền file qua COM giữa 2 PC , mình cũng chỉ thấy có lệnh gửi file mà không có lệnh nhận file.
Code:
Private Sub Command1_Click()
Cdlg.DialogTitle = "Send file..."
Cdlg.Filter = "Textfile (*.TXT)|*.txt|All Files (*.*)|*.*"
Cdlg.InitDir = App.Path
Cdlg.FileName = ""
Cdlg.ShowOpen
' The Function Call
If Cdlg.FileName <> "" Then SendFile (Cdlg.FileName)
End Sub
Private Sub Form_Load()
' Opens the selected com port
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub
' here is the function
Function SendFile(tmp$)
Dim temp$
Dim hsend, bsize, LF&
' Open file
Open tmp$ For Binary Access Read As #2
' Check size on Mscomm1 OutBuffer
bsize = MSComm1.OutBufferSize
' Check file length
LF& = LOF(2)
' This code makes tiny pieces of data (Buffer sized)
' And send's it
Do Until EOF(2)
If LF& - Loc(2) <= bsize Then
bsize = LF& - Loc(2) + 1
End If
' Make room for some data
temp$ = Space$(bsize)
' Put the data piece in the Temp$ string
Get #2, , temp$
MSComm1.Output = temp$
Do
ret = DoEvents()
' Wait until the buffer is empty
Loop Until MSComm1.OutBufferCount = 0
Loop
' close file
Close #2
End Function

Comment