Delta PLC - PC seri haberleşme sorunu...

Başlatan LuckyLuke, 07 Temmuz 2006, 18:04:57

LuckyLuke

Arkadaşlar Delta PLC ile vb ten Mscomm ile haberleşiyorum...
Şöyle bir sorunum var;

Gelenbilgi=mscomm1.input

Text1.text=Gelenbilgi

yukarıdaki komut satırlarında plc den Mscomm1.input 'a 15 karakterlik bilgi geldiği halde değişkene ilk 8 karakteri atıyor. Text kutusunda hep ilk 8 karakteri görebiliyorum.
Gelenbilgi değişkenini string tanımladığım halde neden bufferdan ilk sekiz kaarakteri okuyabiliyorum.

Bu sorunu nasıl çözebilirim.

Daha önce bu sorunla karşılaşan ve çözümünü bilen varsa yardımcı olabilir mi acaba...

Şimdiden çok teşekkürler...

microcozmoz

Delta PLC ler ile çalışıyorum fakat daha önce böyle bir çalışma yapmak için uğraşmaya zamanım olmadı  :)

Aklıma gelen text bölgenin değişken tipi byte ise sadece 8 bit görebilirsin..Eğer tipi doubleword olarak değiştirirsen düzelir sanıyorum..

Sadece mantık olarak cevap verdim umarım tutar :)
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

LuckyLuke

Text bölgesinin değişken tipi String
Deltadan gelen bilgi ASCII buffera 16 karakter geliyor
Örnek ":0103020003F7LRCF" ben bunu text değişkenine aktardığımda
sadece ilk 8 karakterini alabiliyorum.
":0103020"
Sorunu bir türlü çözemedim...

Teşekkürler...

microcozmoz

Text bölgesinin değişken tipini değiştiremiyormusun??
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

LuckyLuke

Sayısal değişken atadığımda hata veriyor (Long veya Double tanımladığımda)

picusta

Son iki karakter, katarin bitigini söylüyor: LF:Line Feed, CR: Carriage Return.
C'de olsa, katardan formatlanmis okuma için komutlar hazir: sscanf(). olmadi gets() kullanirsin.
Basic'teki karakter katari ile ilgili komutlari bilmiyorum.

LuckyLuke

VBasic teki dizi sonu karakter komutu  VbCrLf

Yardım eden herkese çok teşekkürler sorunu çözdüm.

Sorun Mscomm1.input komutunu bekleme döngüsünde imiş.

While
Wend

döngüsü kullanıyordum olmamıştı.


Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, vbCrLf)
Yukarıdaki döngüyü kullandım sorun çözüldü.
Selamlar...