|
Tài trợ cho PIC Vietnam |
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... |
|
Ðiều Chỉnh | Xếp Bài |
26-02-2009, 09:35 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Jan 2009
Bài gửi: 2
: |
Help me!!Bác nào cao thủ giúp em cái giao tiếp giữa hai máy tính qua cổng com
Bác nào cao thủ giúp em với.
Em đang làm đề tài về truyền thông giữa hai máy tính qua cổng Com.Yêu cầu truyền kí tự và truyền file,giao diện tiếng việt.Em thử chạy chương trình bằng cách nối chân 2 và 3 của 1 máy tính lại để kiểm tra.Sau khi tìm kiếm và ngâm cứu code trên mạng em đã làm được phần truyền kí tự còn phần truyền file thì mắc phải 1 vấn đề là:file sau khi truyền rồi save lại thì khi mở file đã save ra thì file này không có dữ liệu.Bác nào biết lỗi hay thiếu xót ở đâu xin chỉ giáo dùm em.Em xin gửi code ở dưới đây để các bác dễ bề xem xét. CODE Private Sub Command1_Click() On Error GoTo OpenFalse If MSComm1.PortOpen = False Then 'PortOpen=true: mo cong;false :dong cong MSComm1.PortOpen = True End If Exit Sub OpenFalse: MsgBox Err.Description & vbLf + vbCr + "Loi, khong the mo cong. Hay dong cac ung dung dang su dung cong COM" End Sub Private Sub Command2_Click() If MSComm1.PortOpen = True Then 'co cung duoc ko cung ko sao MSComm1.PortOpen = False End If End End Sub Private Sub Command3_Click() On Error GoTo sendfalse MSComm1.Output = Trim(Text1.Text) Text1.Text = "" Exit Sub sendfalse: MsgBox "Loi, Cong COM chua duoc mo" End Sub Private Sub Command4_Click() Text2.Text = "" End Sub Private Sub Command5_Click() Cdlg.DialogTitle = "Send file..." Cdlg.Filter = "Textfile (*.TXT)|*.txt|All Files (*.*)|*.*" Cdlg.InitDir = App.Path Cdlg.FileName = "" Cdlg.ShowOpen Text1.Text = Cdlg.FileName Label1.Caption = Str(Round(FileLen(Text1.Text) / 1024, 2)) + "KB" Exit Sub Loi: Label1.Caption = "0 KB" Text1.Text = "" Text2.Text = "Da truyen file qua cong COM1 thanh cong" ' goi ham truyen file If Cdlg.FileName <> "" Then SendFile (Cdlg.FileName) End Sub Private Sub Command6_Click() FileReceive = FreeFile ReceiveFlag = True Timer1.Enabled = False Do Cdlg.FileName = "" Cdlg.ShowSave If Trim(Cdlg.FileName) = "" Then MsgBox "File name error!!" End If Loop While Trim(Cdlg.FileName) = "" Text2.Text = Cdlg.FileName MSComm1.Output = "RECEIVE" + vbCr Open Trim(Text2.Text) For Output As FileReceive End Sub Private Sub Form_Load() With MSComm1 .Settings = "9600,N,8,1" .RThreshold = 1 'su kien OnComm xay ra khi bat kì kí tu nào duoc chuyen den bo dem nhan. .Handshaking = comNone .SThreshold = 0 .InBufferSize = 1024 .OutBufferSize = 1024 .InputMode = comInputModeText 'quyet dinh dang du lieu nhan duoc la dang text .InputLen = 0 .CommPort = 1 'thiêt lâp và tra vê tên cua công giao tiêp la cong COM1 End With End Sub Private Sub MSComm1_OnComm() If (MSComm1.CommEvent = comEvReceive) Then Text2.Text = Text2.Text + MSComm1.Input End If End Sub ' ham truyen File Function SendFile(tmp$) Dim temp$ Dim hsend, bsize, LF& ' mo file Open tmp$ For Binary Access Read As #2 ' kiem tra kich thuoc Mscomm1 OutBuffer bsize = MSComm1.OutBufferSize ' kiem tra kich thuoc File LF& = LOF(2) ' code nay se chia du lieu thanh nhung fan nho(Buffer sized) ' va gui chung di Do Until EOF(2) If LF& - Loc(2) <= bsize Then bsize = LF& - Loc(2) + 1 End If ' tao vung chua du lieu temp$ = Space$(bsize) ' dat du lieu vao bien Temp$ dang string Get #2, , temp$ MSComm1.Output = temp$ Do ret = DoEvents() ' cho den khi buffer trong Loop Until MSComm1.OutBufferCount = 0 Loop ' dong file Close #2 End Function Em viết có hơi dài dòng là do em chưa có kinh nghiệm máy tính nên không biết gửi hẳn file bài lập trình bằng VB của mình.Mong các bác thông cảm.Mong sớm nhận được sự giúp đỡ của các bác.Các bác có thể gửi tài liệu giúp đỡ vào mail:"truongtrung8730@yahoo.com.vn" Thân! |
|
|