Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

PIC VB ve Seri port

Başlatan okreg, 01 Eylül 2011, 15:43:14

okreg

Merhaba, iyi bayramlar

16f877 nin 5 analog girişine 5 adet pot bağlıyorum ve  10 bit analog sinyal alıyorum. Bu bilgiyi PIC'e bağlı LCD'den göreceğim ve Rs-232 ile PC'ye aktarmam gerekiyor. 10-100 ms aralıklarla bu bilgiyi PC tarafından okumam ve textboxlara yazdırmam gerekiyor. Aktaracağım data 10 bit olmak zorunda.

PIC tarafı OK ama VB tarafını çözemiyorum. Aslında projem daha farklı ama basit olması açısından bu şekilde tasarlayıp  sormak istedim.

İlgilenen ve yardımcı olacklara şimdiden teşekkürler

Pic Code...

Device = 16F877
XTAL = 4

TRISA=%00111111
TRISB=0
TRISC=0
TRISD=%00000010
'-------------------------------------------------------------------------

Include "MODEDEFS.BAS"

Declare LCD_TYPE 0 			
Declare LCD_DTPIN PORTB.4	
Declare LCD_ENPIN PORTB.3
Declare LCD_RSPIN PORTB.1
Declare LCD_INTERFACE 4 	
Declare LCD_LINES 2	  	
Declare ADIN_RES 10      
Declare ADIN_TAD 2_FOSC      
Declare ADIN_STIME 50
'-------------------------------------------------------------------------------
ADCON1=%10000010 
'-------------------------------------------------------------------------------
D1 var Word
D2 VAR Word
D3 VAR Word
D4 var Word
D5 var Word

Print $FE,1	
DelayMS 200   

BASLA:
     D1 = ADIn 0
     D2 = ADIn 1
     D3 = ADIn 2
     D4 = ADIn 3
     D5 = ADIn 4
      
      Print $FE,1, Dec D1 ," " ,Dec D2 ," ",Dec d3 
      Print $FE,$C0, Dec D4," " ,Dec d5
 
GONDER:
SerOut PORTD.0, N9600 ,["@","POT1",Dec D1]
SerOut PORTD.0, N9600 ,["@","POT2",Dec D2]
SerOut PORTD.0, N9600 ,["@","POT3",Dec D3]
SerOut PORTD.0, N9600 ,["@","POT4",Dec D4]
SerOut PORTD.0, N9600 ,["@","POT5",Dec D5]

DelayMS 200
GoTo BASLA


VB Code...

Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 3
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub

Private Sub Timer1_Timer()
deger As String

If Mid(deger, 1, 1) = "@" Then
If Mid(deger, 2, 5) = "POT1" Then Text1.Text = Mid(deger, 6, 9)
If Mid(deger, 2, 5) = "POT2" Then Text2.Text = Mid(deger, 6, 9)
If Mid(deger, 2, 5) = "POT3" Then Text3.Text = Mid(deger, 6, 9)
If Mid(deger, 2, 5) = "POT4" Then Text4.Text = Mid(deger, 6, 9)
If Mid(deger, 2, 5) = "POT5" Then Text5.Text = Mid(deger, 6, 9)
End If
End Sub


OKREG

OG

#1
Kötü şöhretli MSCOMM,

Gönderdiğin deger word, MSCOMM ise string yapıda byte byte  gönderir ve alır.

Değerini ya byte a çevir ya da PC tarafında düzenleme gerektirir. Gönderirken byte byte göndermen işini kolaylaştırır. Daha  kolay anlaşılır şekli ise digit digit ayırmandır. DIG komutuna bak.

Ayrıca Timer içinde MSComm1.Input yapmamışsın , yani alış yok.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.