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