mình củng gặp khó khăn một số vấn đề thứ nhất mình chưa học vb nên chưa thông về cái lệnh cho lắm.cái này chắc phải học vb lại rồi .cai file của bạn mình down về dùng vb mở file vbp rồi chạy run no bao lổi dòng gì mà có from_load bao loi bắt đầu từ dòng .CommPort = 2 và hiện lên cửa sổ complier error: method ỏ data menber not found mình không biết sao nửa.hay tại vì mở mô phỏng bẳng cách này không được phải không.còn mở file dung.exe mô phỏng thì được.bạn có thể cho mình một số tài liệu về lệnh truyền nhận trong vb dc khong bạn,thanks bạn nhiều
|
-file mình gửi muốn Run được thì bạn vào Project-Component-Chọn Microsoft Comm Control 6.0 -Apply-Ok là Run đc ngay..Mà nhớ trước khi Run phải mở cổng com 2 ảo lên.
-Bạn kiếm trên diễn đàn có TUT về Giao tiếp Visual Basic với VDK của anh Ngô Hải Bắc viết rất chi tiết.. |
4 Attachment(s)
Đây là 1 số tài liệu giao tiếp PC với VDK..có cả TUT của anh Ngô Hải Bắc..Chúc vui.
|
cảm ơn bạn nhé.chúc bạn vui
|
minh da mo duoc roi minh quen thiet lap thong so com trong hardware cua win
|
giup do em voi cac pro
1 Attachment(s)
em có một số thấp mắt như sau ve doan coed nay :
#include <16f877a.h> #device 16f877a*16ADC=10 #fuses nowdt,nolvp,noprotect,xt,put #include <DEFS_16F877A.h> #include <string.h> #include <stdlib.h> #use delay(clock=4000000) #use fast_io(b) #use fast_io(c) #use fast_io(a) #bit RS = portA.0 #bit RW = portA.1 #bit E = portA.2 #define lcd PORTD #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) char data; int t; char luukytu[16]; int8 dem; void goilenh(); void goi_dulieu(); #int_RDA void ngat_RDA() { if (0 != kbhit()) { data = fgetc(); if (data==':') dem=0; else dem++; luukytu[dem]=data; putc(data); } } void main() { enable_interrupts(int_RDA); enable_interrupts(global); set_tris_c(0x80); set_tris_a(0); set_tris_d(0); portc=0; portd=0; porta=0; delay_ms(100);// CHOI THOI GIAN KHOI DONG LCD for(t=0;t<16;t++) { lcd=0x38; goilenh(); lcd=0x0e; goilenh(); lcd=0x06; goilenh(); lcd=0x80; goilenh(); lcd=luukytu[t]; goi_dulieu(); delay_ms(1); } } /*Ham yeu cau goi lenh dieu khien LCD*/ void goilenh() { RS = 0; RW = 0; E = 1; E = 0; delay_ms(1); } /*Ham yeu cau goi du lieu hien thi len LCD*/ void goi_dulieu() { RS = 1; RW = 0; E = 1; E = 0; delay_ms(1); } doan code vb: Option Explicit Dim i As Integer Private Sub cmdchu_Click() Text1.Text = "" Text2.Text = "" End Sub Private Sub cmdsend_Click() MSComm1.Output = Text2.Text End Sub Private Sub cmdthoat_Click() MsgBox "Thoat Khoi Chuong Trinh" End End Sub Private Sub Form_Load() MSComm1.CommPort = 2 'cong COM 2 MSComm1.Settings = "9600,N,8,1" 'Baudrate=9600,Ko KT chan le,frame 8 bit,1 bit stop MSComm1.InBufferSize = 1024 'Bo dem 1024 byte thi day MSComm1.InputLen = 0 'Doc toan bo gia tri bo dem MSComm1.RThreshold = 1 'Cho phep ngat khi su kien Receiver o MSCOMM MSComm1.SThreshold = 0 'Ko cho phep ngat khi su kien Send o MMSCOMM MSComm1.OutBufferSize = 512 MSComm1.InputMode = comInputModeText MSComm1.PortOpen = True 'Mo cong COM End Sub Private Sub MSComm1_OnComm() Dim StringIn As String If MSComm1.CommEvent = comEvReceive Then StringIn = MSComm1.Input Text1.Text = StringIn End If End Sub + thứ nhất: dùng giao diện vb để truyền một chuổi ký tự từ pc xuống pic để hiện thị lên lcd .em còn yếu về lập trình lắm nên không sửa được lổi nên em mong các bác có thể giúp em với.em chĩ thuc hiện dc viec truyen một ký tự xuống và hiện thị lên lcd .còn một chuổi thì không được như tên mình chẳn hạn.chương trình này nhận dữ liệu phản hồi từ pic thì đúng nhưng nó không hiện thị trên lcd gì hết .chắc do chương trình hiện thị sai thì phải mà em không biết sửa như thế nào nào + thứ hai : là làm sao mình có thể lưu chuỗi ký tự nhận dc tu pc và lưu nó vào mảng động rồi sao đó lấy chuỗi ký tự trong mảng hiện thị lên một cái gì đó. + thứ ba : em muốn hiện thị nhiệt độ lên máy tính thì truyền như thế nào .ví dụ 30 độ thì ta có cần tách số 30 này thành số 3 và số 0 để truyền lên không hay là truyền số 30 lên luôn trên vb khai bao nhận có phải là khai báo biến là integer hoặc byte gj không .em cần một số ý kiến để đã thông nguyệt đạo .mong các bac giúp em thanhk nhiều |
Mình góp ý cho bạn 1 chút nhé
Thứ 1:Bạn muốn truyền 1 chuỗi ký tự xuống thì bạn phải coi lại dòng lệnh này "MSComm1.InputMode = comInputModeText " (Change "Text"="Binary"), và bạn nên coi lại dòng này nữa MSComm1.RThreshold = 1,nếu bạn muốn nhận 2 ký tự bạn để cái này bằng 1 thì........ Thứ 2: bạn chỉ cần dùng hàm If Len(Y)=2 then Text1.Text=Y ("Y =mscomm1.input bạn nhé,đừng thêm dòng này vào") Thứ 3:mình nghĩ bạn chỉ cần tách ký tự khi VD bạn có 2 số là tốc độ,2 số là nhiệt độ thì bạn mới cần tách thôi.Nếu bạn muốn truyền số 30 lên thì MSComm1.RThrehold=2 bạn nhé Note:mình góp ý chút bạn nên làm lần lượt,trước tiên bạn nên làm cái nhiệt độ truyền lên xuống dc rồi mới giải quyết cái LCD chứ bạn làm vậy k ai đã thông dc nguyệt đạo cho bạn đâu .Chúc Vui |
#include <16f877a.h>
#include <stdlib.h> #fuses nowdt,nolvp,noprotect,xt,put #include <DEFS_16F877A.h> #include <ctype.h> #use delay(clock=4000000) #use fast_io(b) int data,x; char chu='a'; void main() { set_tris_d(0); portd=atoi(chu); } minh có đoạn code nhỏ muốn chuyển ký tự ascii sang số nhưng chương trình không hiểu mình dùng lệnh atoi chuyển ký tự ascii sang so nguyên 8 bit vi dụ : chữ A trong ascii là có mã thập phân là 65 và hex là 0x41 ý mình muốn đổi A thành 65 thôi . còn nếu cho portd = 'A' thì nó ra kết quả là 65; chỉ có điều mình sử dụng biến trung gian để chuyển đổi thì không được nhung có điều chương trình nó không hiệu tại sao vậy .bác nào giúp giải thích thắc mắt này với |
Bạn nhấn phím F1 xem cách sử dụng lệnh Atoi() nhé !!!
Code:
#int_RDA Mình góp ý bạn viết như thế này : Code:
#INT_RDA Trong main() bạn viết Code:
.... |
cam on bạn nhé de minh thu viet theo cach nay thu xem
ah cho mình hỏi thêm một tý nếu mà data =='#' tuc là trong chuỗi ký tự truyền xuống nhận được ký tự # này thì báo là pic đã nhận được ký tự cuối cùng set cờ flag ==1 . ý bạn nói ở đây là chờ cho nhận đủ ký tự rồi mới đem hiển thị gì đó đúng không .còn nếu chưa nhận đủ ký tự thì trong chương trình main không làm gì cả vì flag=0; tức là không thực hiện lệnh trong while(flag==1) { lenh } được .thế thì theo mình nghỉ thì truyền chuỗi ký tự từ máy tính xuống pic phải kết thúc bằng dấu # rồi .ví dụ chuỗi ký tự truyền xuống có dạng như vậy chẳng hạn : caothang# .giả sử nếu ký tự truyền xuống thì không có dấu # ở cuối câu thì đâu có xác định được khi nào nhận được ký tự cuối cùng. ah còn thằng putc(data) ; nó có truyền được chuổi ký tự đâu nó chỉ truyền một ký tự thôi mà vậy nếu như vậy thì nếu nhận đủ ký tự cuối cùng thì chỉ truyền được ký tự cuối cùng là dấu # lên pc thôi mình nói có đúng không bạn cho mình ý kiến nhé.ah ban ở đâu thế mình thì đang theo học kỷ thuật cao thắng ở thành phố. bạn ở thành phố này không.nếu bạn ở thành phố thì có thể anh em mình ra ngoài quán bàn nhé .xin hỏi như vậy có phiền bạn quá không nhỉ |
Trích:
trong VB mình cũng lập trình đơn giản thôi. vd: cho nút command "send data" Code:
mscomm1.output=text1.text Cậu học Cao Thắng à..vậy cũng là người quen rồi..mình học lớp B..hôm nào gặp nhé..mail:dungdt08b@gmail.com |
ok nhe .ban ten gi the so dt cua minh la 01656145431 .
minh ten phát lớp cddt08a minh quen may nguoi o lop B tên đình thiên thật ra hiện giờ mình đang nguyên cưu vb.net đễ truyền nhận nè. bên vb.net này truyền bằng serialport mỉnh thấy củng hay nên mình củng đang nguyên cứu nó |
stupid11
ong cho tui hoi #include <stdlib.h> #include <DEFS_16F877A.h> co nghia la gi vay? thank! |
Trích:
Code:
#include <DEFS_16F877A.h> Nếu sử dụng thư viện này thì bạn khỏi cần viết khai báo như sau: Code:
#use fast_io(a)... Code:
#include <stdlib.h> Muốn xem hàm mình sử dụng yêu cầu add thư viện nào thì bạn nhấn phím F1 -> chọn hàm cần xem -> ở phần Requires (yêu cầu) Chúc bạn vui... |
MÀ CÁI ĐỒ ÁN CỦA BẠN LÀM VỀ CÁI GÌ THẾ . AH stupid11 CHO MÌNH HỎI TÝ BẠN ĐÃ TỪNG QUÉT LED ĐƠN MÀ LÀM SAO THAY ĐỔI CƯỜNG ĐỘ SÁNG CỦA LED KHÔNG .THUẬT TOÁN QUÉT NHƯ THẾ NÀO VẬY LÀM THẾ NÀO ĐỂ THAY ĐỔI DÒNG KHI QUÉT VẬY.
|
Múi giờ GMT. Hiện tại là 09:59 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