visual basicte gecikme??

Başlatan apollaa, 14 Nisan 2007, 08:56:35

apollaa

arkadaşlar aşşağıda verdiğim kod pc ye sıcaklık ve nem bilgisi gönderiyor
ve bu bilgiinin visual basicte sıcaklık textbox1 de nem bilgiside textbox2 de görüntülenmesi gerekiyor fakat bilgiler ters kutularda görünüyor
ccs kodu:

#include <16F628A.h> 
#fuses NOWDT,NOPROTECT,NOLVP,INTRC_IO,NOMCLR
#use delay(clock=4000000)
#use rs232(baud=9600,xmit=PIN_B2,rcv=PIN_B1,UART1)
#include <sht75A.c>
void main() 
{ 
 float restemp, truehumid;
 unsigned char gd;
 
 sht_init();
 
  while(1) 
 { 
  sht_rd (restemp, truehumid);
  if(kbhit()){
  gd=getch();
  if(gd=='s'){
  printf("%3.1f %cC   ", restemp, 223);
  }
  if(gd=='n'){
  printf("%3.1f %%   ", truehumid);
  }
 }
 }
}

vb kodu ise:
Dim btn As Boolean, sdata, ndata, i As Double

Private Sub Command1_Click()
MSComm1.PortOpen = False
End
End Sub

Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
btn = False
End Sub

Private Sub Timer1_Timer()
If MSComm1.CommEvent Then
If btn = False Then
MSComm1.Output = "s"   
.....................                         <==gecikme gerekiyor
Text1.Text = MSComm1.Input
btn = True
Else
MSComm1.Output = "n"
.....................                         <==gecikme gerekiyor
Text2.Text = MSComm1.Input
btn = False
End If
End If
End Sub

problemin yukardaki nokta koyduğum yerlerde olduğunu düşünüyorum. fakat visual basicte gecikmenin nasıl yapıldığını (daha doğrusu varmı) bilmiyorum.
diğer taraftan textboxların yerini değiştirmek çözüm olurdu ama mantıklı olmazdı.
bu konuda fikirleri olan arkadaşların yardımını bekliyorum.
şimdiden teşekürler.[code]
Vatan Sizden Hizmet Bekler ( Her Alanda)

ilker_32

Bende bilmiyorum ama gecikmeyi bu şekil yapanlar var.

1000 interval 1 saniye buda 1 saniyelik gecikme olabilir.
---------------------
for i = 0 to 1000

i = i + 1

i = i - 1

next i
--------------------
____________
Kolay gelsin...

apollaa

ilgin için sağol ilker_32 dediğin yolu bi deneyecem.
başka alternatifi olan aarkadaşlar varsa yazarlarsa çok sevinirim.
Vatan Sizden Hizmet Bekler ( Her Alanda)

sertac2003

api kullanarak vb içinde gecikme sağlanabilir.

Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)


programının en üstünde yada daha güzeli bir modül içine yukarıdaki satırı ekledikten sonra;

sleep() komutunu kullanarak ms bazında gecikme oluşturabilirsin

sleep(5) ' 5 ms gck

sleep(12400) '12.4 sn gck
Şirketteki herkes en üst yöneticinin müşterisidir.

apollaa

sertac2003 çok sağol verdiğin bilgi için bi deneyeyim bu kodu
Vatan Sizden Hizmet Bekler ( Her Alanda)

apollaa

gecikmeyi oluşturdum
fakat bu gecikme programın tümünü etkiliyor sadece ilgili bölümü gecikmeye uğratmam mümkünmüdür mesela

Private Sub Timer2_Timer()
i = i + 1
Text4.Text = i
Sleep (1000)
End Sub


sadece timer2 nin bu gecikmeden etkilenmesi mümkünmü
Vatan Sizden Hizmet Bekler ( Her Alanda)

apollaa

aradığım cevabı buldum bütün programı etkilemeden gecikme şu kodla yapılıyormuş:

[/code]
Sub Pause(ByVal nSecond As Single)
Dim t0 As Single
t0 = Timer
Do While Timer - t0 < nSecond
Dim dummy As Integer
dummy = DoEvents()
If Timer < t0 Then
t0 = t0 - CLng(24) * CLng(60) * CLng(60)
End If
Loop
End Sub
[code]

pause(1)   //1 sn lik gecikme yapıyor
puse(0.5)  //yarım sn gibi..
Vatan Sizden Hizmet Bekler ( Her Alanda)