cần giúp
tại sao cổng usb chuyển sang 232 ma khi truyền từ máy tính xuống pic không nhiễu,khi truyền từ pic lên máy tính giao diện vb thì bị nhiễu.mong các cao thủ chỉ dùm cảm ơn nhiều
* Edit |
MONG SỰ GIÚP ĐỠ GẤP CỦA MỌI NGƯỜI VỀ RS232 ( MÌNH ĐANG RẤT CẦN )
Mình đang làm một chương trình kết nối cổng RS232 sử dụng visual c++. không hiểu vì sao khi test chương trình thì thấy không truyền xuống PIC6f877a được. chương trình của mình : #include "stdafx.h" #include <windows.h> // kiem tra che do mo cong. TCHAR *pcCommPort = TEXT("COM3"); HANDLE hcom = CreateFile( pcCommPort, GENERIC_READ | GENERIC_WRITE, 0, // must be opened with exclusive-access NULL, // default security attributes OPEN_EXISTING, // must use OPEN_EXISTING 0, // not overlapped I/O NULL // hTemplate must be NULL for comm devices ); // cài đặt trạng thái ban đầu . void Setting() { if (hcom == INVALID_HANDLE_VALUE) { // Handle the error. printf ("CreateFile failed with error %d.\n", GetLastError()); return ; } else { // set timeouts COMMTIMEOUTS cto = { 1, 100, 1000, 0, 0 }; DCB dcb; if(!SetCommTimeouts(hcom,&cto)) printf ("E013_SetCommTimeouts failed\n"); // Thiet lap cac che do cong com memset(&dcb,0,sizeof(dcb)); dcb.DCBlength = sizeof(dcb); dcb.BaudRate = 9600; dcb.fBinary = 1; dcb.Parity = NOPARITY; dcb.StopBits = ONESTOPBIT; dcb.ByteSize = 8; dcb.fDtrControl = DTR_CONTROL_ENABLE; dcb.fRtsControl = RTS_CONTROL_ENABLE; if(!SetCommState(hcom,&dcb)) printf ("E013_SetCommTimeouts failed 2\n"); CloseHandle(hcom); } } // Mo cong com void RS232(CString data) { // Chuyen va nhan du lieu char p; char data_receive; DWORD read = 0; DWORD write=1; // Number of bytes to write to serial port p = WriteFile(hcom,&data,write,&write,NULL); // write is updated with the number of bytes written ReadFile(hcom,&data_receive,sizeof(data_receive),& read,NULL); // read is updated with the number of bytes read DWORD i; for (i=0; i<read; i++) printf("%i ", (unsigned char)data_receive); } // BAT DAU HAM MAIN GUI MOT KY TU XUONG PIC16F877A. void main(){ setting(); RS232('R'); } CẢM ƠN MỌI NGƯỜI RẤT RẤT NHIỀU !! |
Sao không có ai giúp mình vậy !
|
Trên VC++bạn làm theo TUT của anh Ngô Hải Bắc đó. Chạy ổn.Còn ở PIC thì viết chương trình ngắt nhận như sau:
Code:
#INT_RDA |
2 Attachment(s)
Chao mọi người. MÌnh đã làm theo TUT của a Bắc và Build được file RS232TUT.exe trên VC++ 6.0 Nhưng khi mình mang chương trình sang máy khác chạy thì không thấy gì cả (cảm giác là chương trình vừa kết thúc ngay khi bắt đầu) Ai rành về VC++ thì giúp mình khắc phục vấn đề này với. XIn chân thành cảm ơn.
|
minh đang làm đề tài điều khiển động cơ giao tiếp với máy tinh
Trích:
|
các bác ơi bây giờ em muốn lập trình cổng Com bằng VC#.Ai có tài liệu gì thì post lên cho em với
|
Anh em hỏi sao dùng thư Viện MSDN bản full dành cho Visual studio 6 mà ko thể tìn vào thư viện như anh bắc bảo.Vậy em phải làm thế nào :S
|
chao cac anh.gio em dang lam giao dien vb truyen du lieu tu 8051 len pc, ma ko biet lam sao ca.co ai co tai lieu ko cho em voi
|
giao dien viet bang vb nha
|
chương trình mô phỏng cổng COM ảo xài nhu thế nào nhỉ.....????ai bit chỉ cho mình zới ("-")
|
pac nao có chương trình giao tiếp PC với 16f877a cho em xin, để chạy thử tham khảo:-??
|
Trích:
Bạn vào luồng này nhé..mình có gửi file hướng dẫn lập trình giao tiếp máy tính với PIC dùng cổng com ảo... |
Mấy bác cho em hỏi cái này. Em truyền nhận dữ liệu giữa 16f877 và VB6 đã nhận đc nhưng chỉ với thạch anh 4000000Hz, khi thay đổi cái này thì lại không nhận được. Em làm với kit thạch anh 24Mhz ko thể nhận dữ liệu được. Mong các bác chỉ giáo giùm em với.
VB: 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 PIC: #include <16f877a.h> #FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=4000000) #use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7) #include <stdlib.h> #byte porta = 0x05 #byte portb = 0x06 #byte portc = 0x07 #byte porte = 0x09 int8 y,i,a,b,c,d,e; int16 x; char string[5]; BYTE CONST maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0}; void nhan_rs232() { for(i=0;i<=4;i++) { string[i]=getc(); } printf("%s",string); y=0; x=atol(string); a=x/10000; x=x%10000; b=x/1000; x=x%1000; c=x/100; x=x%100; d=x/10; x=x%10; e=x; a=maled[a]; b=maled[b]; c=maled[c]; d=maled[d]; e=maled[e]; for(i=0;i<=200;i++) { output_A(0b01111); output_D(a); delay_ms(1); output_A(0b11111); output_A(0b10111); output_D(b); delay_ms(1); output_A(0b11111); output_A(0b11011); output_D(c); delay_ms(1); output_A(0b11111); output_A(0b11101); output_D(d); delay_ms(1); output_A(0b11111); output_A(0b11110); output_D(e); delay_ms(1); output_A(0b11111); } } /*void xoa() { for(i=0;i<=4;i++) { string[i]=0; } }*/ void main() { set_tris_b(0); set_tris_e(0); while(true) { if(y==0) { nhan_rs232(); delay_ms(100); } } } Em làm nhận một số 5 chữ số hiển thị led 7 đoạn đây là file mô phỏng: http://www.mediafire.com/?d4g26cwn4bx4g8y |
a NgoHaiBac oi! cho e hỏi e đang phải làm bài tập lớn về " Xây dựng xây dựng moodul vào ra ghép nối với cổng rs232 với 8 đầu ra rơ le,dòng điện nhỏ hơn 500mA,8 đầu vào số cách li quang .xây dựng phần mềm giao điện đơn giản trên máy tính cho phép đọc 8 đầu vào và hiển thị kết quả dưới dạng đồ thị điều khiển bằng các nút ấn!!! phải làm ntn hả a?
|
Múi giờ GMT. Hiện tại là 01:29 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam