![]() |
|
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 |
![]() |
#121 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 5
: |
Em chào các bác, em thấy mọi người thảo luận xôn xao về giao tiếp cổng COM, cÓ rất nhìu bài hay luôn, nhưng em chưa thấy bác nào nói về tập lệnh AT.
Chẳng dấu là : em đang tìm hiểu tập lệnh AT, sau khi thiết lập giao tiếp với cổng COM, em muốn gửi, nhận tin nhắn bằng tập lệnh AT qua GSM modem G2403R . Bác nào đã từng nghiên cứu về tập lệnh AT, cũng như là gửi nhận tin nhắn dùng tập lệnh AT xuất ra cổng COM -> GSM modem G2403R thì giúp em với. Hiện tại em chưa biết viết câu lệnh như thế nào để xuất những câu lệnh AT ra cổng COM........................ |
![]() |
![]() |
![]() |
#122 |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 3
: |
Nếu viết bằng VB thì mình có xử lý được hiển thị giá trị thực không. đầu vời ccomms là int còn hiển thị ra giá trị cstring
|
![]() |
![]() |
![]() |
#123 |
Đệ tử 3 túi
Tham gia ngày: Dec 2008
Bài gửi: 50
: |
bài tập truyền nhận cơ bản đầu tiên
các bác giúp em với, nghĩ mãi mà chưa làm được , chương trình của em nó chỉ nhận thôi, nhưng khi nhận xong thì PIC lại không thấy hiển thị, còn truyển ngược lại thì chưa đươc
code trong Pic: #include <16F877a.h> #include <DEFS_16F877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) #use rs232(baud=9600,parity=n, xmit=PIN_C6, rcv=PIN_C7) unsigned char dulieu; #INT_RDA void data_receive(void) { dulieu = getc(); putc(dulieu); } void main() { set_tris_a(0); ENABLE_INTERRUPTS(GLOBAL); ENABLE_INTERRUPTS(INT_RDA); while(true) { output_a(dulieu); delay_ms(2000); } } code trong VB: Private Sub cmdClear_Click() Text1.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 = 4 .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 Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then Text1.Text = Text1.Text + Asc(MSComm1.Input) End If End Sub (em tìm mãi mà không thấy chỗ nào để viết code.) thay đổi nội dung bởi: nguyennam8888, 10-04-2009 lúc 09:56 AM. |
![]() |
![]() |
![]() |
#124 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 6
: |
Pak hải ơi !cho em hỏi về rs232 cái:em muốn bít về nó mà em thì chưa bít j cả.pak có thể giúp em hỉu đôi chút về nó ko.có tài liệu nào bằng tiếng việt nói về nó ko pak.cám ơn pak nhìu
|
![]() |
![]() |
![]() |
#125 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 6
: |
pak nao co tài liệu tiếng việt về cổng com ko.em đang rất cần.thanks các pak nhìu,
|
![]() |
![]() |
![]() |
#126 |
Nhập môn đệ tử
Tham gia ngày: Oct 2008
Bài gửi: 2
: |
Em đang tìm hiểu cách giao tiếp cổng COM bằng VC++ bằng cách sử dụng thư viện inpout32 qua win 32.Bác nào biết về cái này thì hướng dẫn e với.
|
![]() |
![]() |
![]() |
#127 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 14
: |
Xin chào! Mình thử giao tiếp mãi mà ko dc không biết sai sót ở đâu. mình dùng cachs bật các led ở Port b để báo là có truyền thông
#include <16f877a.h> #include <def_877a.h> //#device *=16 ADC=8 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9) char buf; int a; // Ngat Truyen thong #INT_RDA Receive_isr() { buf=getc(); putc(buf); PORTB=0x00; Các cao thủ KT hộ với. tôi nghi là sai phần khai báo(đánh dấu), nhưng mục này thường copy nên ko rõ bản chất |
![]() |
![]() |
![]() |
#128 |
Đệ tử 1 túi
Tham gia ngày: Feb 2009
Bài gửi: 19
: |
Mình cũng đang làm RS232, đang gặp khó khăn về buffer của RS232. Khi chương trình PIC gởi lên một chuổi nào đó, trình ứng dụng đọc chuỗi này chưa hết thì nó vẫn còn trog bộ đệm làm ảnh hưởng đến lệnh sau đó. Có ai đó chỉ mình xóa bộ đệm của RS232 giúp mình với.
|
![]() |
![]() |
![]() |
#129 |
Đệ tử 1 túi
Tham gia ngày: Apr 2009
Bài gửi: 11
: |
anh Hải ơi, em làm theo cái TUT của anh nhưng đến đoạn thêm điều khiển AxtiveX Microsoft Communications 6 thì bị lỗi "don't send". Em dùng bản Visual Studio 6 Enterprise Edition.
|
![]() |
![]() |
![]() |
#130 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
Bạn cài lại VS
![]() |
![]() |
![]() |
![]() |
#131 |
Đệ tử 1 túi
Tham gia ngày: Apr 2009
Bài gửi: 11
: |
![]() |
![]() |
![]() |
![]() |
#132 |
Đệ tử 6 túi
Tham gia ngày: Apr 2006
Bài gửi: 125
: |
Nếu khôg được thì cài lại win đi haha hoặc có thể thử kiếm cái đĩa cài VS khác xem sao
|
![]() |
![]() |
![]() |
#133 |
Đệ tử 1 túi
Tham gia ngày: Apr 2009
Bài gửi: 11
: |
sau bước 1 của TUT, xóa 2 nút OK, CANCEL và dòng văn bản tĩnh TODO thì VC báo lỗi don't send và thoát ra ngoài, vậy là lỗi gì vậy các anh?
|
![]() |
![]() |
![]() |
#134 |
Nhập môn đệ tử
Tham gia ngày: Apr 2009
Bài gửi: 3
: |
Mình đang làm cái VB để làm giao diện với VXL.
Mình đã thiết kế như các bạn nói ở trên nhưng không hiểu sao khi VXL của mình gửi ra một giá trị kiểu INT (là số 15 chẳng hạn) thì trên giao diện không hiển thị đúng số 15 mà nó hiển thị một kiểu khác. Làm thế nào để hiển thị giá trị thực từ VXL gửi ra. Mong các bạn giúp đỡ . đây là code VB của mình Private Sub Command1_Click() On Error GoTo OpenFalse If MSComm1.PortOpen = False Then 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 MSComm1.PortOpen = False End If End End Sub Private Sub Command3_Click() On Error GoTo sendfalse MSComm1.Output = Text1.Text Exit Sub sendfalse: MsgBox Err.Description & vbLf + vbCr + "Loi, Cong COM chua duoc mo, nhan Connect" End Sub Private Sub Form_Load() With MSComm1 .Settings = cmbBaudRate.Text + "N,8,1" .RThreshold = 1 .SThreshold = 0 .InBufferSize = 1024 .OutBufferSize = 1024 .InputMode = comInputModeText .ParityReplace = "" .CommPort = Switch(cmbComPort.Text = "COM 1", 1, cmbComPort.Text = "COM 2", 2, cmbComPort.Text = "COM 3", 3, cmbComPort.Text = "COM 4", 4) End With End Sub Private Sub MSComm1_OnComm() Dim StringIn As String If MSComm1.CommEvent = comEvReceive Then StringIn = MSComm1.Input 'Nhan chuoi du lieu to VCOM Text2.Text = StringIn End If End Sub |
![]() |
![]() |
![]() |
#135 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
dữ liệu mà VB nhận ở dạng internal number , để hiển thị ra màn hình bạn phải chuyển về dạng text string :
bạn thử thay Text2.Text = Cstr(StringIn) hoặc Text2.Text = Asc(StringIn) xem |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Cho hỏi về giao tiếp RS232 của PIC16F877A | enti | Giao tiếp cổng COM và LPT | 31 | 25-03-2016 10:14 PM |
Giao tiếp RS232 trên PC qua Matlab | ngohaibac | Giao tiếp cổng COM và LPT | 47 | 18-11-2015 03:51 PM |
giao tiep RS232 voi C | dangngoc | Giao tiếp cổng COM và LPT | 9 | 26-02-2012 02:25 AM |
cần mua bộ thu GPS có giao tiếp RS232 | kienvq | Tìm mua sản phẩm | 15 | 17-03-2011 11:25 PM |
Help! Dùng C để giao tiếp RS232 | dandiennang | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 6 | 15-03-2009 06:41 PM |