Visual Basic ve Seri Port ile ilgili birkaç soru

Başlatan x, 20 Ağustos 2007, 12:06:38

x

merhaba

Visual Basic'te yeni sayılırım mscomm ile seri portu kullanarak picli devreme bilgi gönderip alıyorum ama merak ettiğim yerler var

1. programda mscomm bileşeninin özelliklerinden com port numarasını ayarlıyorum fakat pc de mevcut olan com portları bulup bunları bir combobox ta nasıl listeleyebilirim (kullanıcının seçebilmesi için)

2. mscomm kullanırken devreden veri okumak için hangisi daha uygun olur? timer olayı oluşturup mscomm.input yapmakmı? yoksa bileşen özelliklerinde Rtreshold gibi bişiy vardı onu kullanıp bileşenin onComm olayını kullanmakmı?

3. programımı başka bilgisayarda kullanmam gerektiğinde o bilgisayarda mscomm bileşeni yoksa ne olacak? bu bileşeni program içine gömebilirmiyim?

teşekkürler

bigbey

TA6R

x

tam 3. sorumda belirttiğim durum oluştu :) şu anda gönderdiğin programa baktığım pc de MSCOMM32.OCX dosyası olmadığından hata verdi
haliyle ilk 2 soruma yanıt oldumu bilmiyorum akşam eve gidince anlayabileceğim

erdinch

Benim de bu konuda bir çalışmam olmuştu.Sanırm bu çalışma ilk iki soruna cevap verebilir.Fakat 3. sorunun cevabını malesef ben de bilmiyorum.İlgili dosya linktedir.

http://rapidshare.com/files/50143308/boot___control.rar.html

İyi çalışmalar dilerim..

aslan_korhan

Visual Basic PowerWrap v4.3



This powerful utility allows developers to distribute their programs easier than ever before. Developed to help Visual Basic programmers distribute their executable file(s) without worrying about runtime dependencies, VB-PowerWrap allows you to package all .dll's and .ocx's, as well as other dependent or non-dependent files inside the executable of your Visual Basic program, with no setup or installation to run.

What's new in Version 4.0
- You can now wrap any executable. Just add the executable, right click and select "Wrap this executable".
- Ccontrol the compression level of your executable.
- Startup speed improved.
- "Test" button added.
- Interface updated, along with a number of small bug fixes

VB-PowerWrap allows developers to distribute their programs without the host of various OCX's and DLL's. Developed to help Visual Basic programmers distribute their executable file(s) without worrying about runtime dependencies, VB-PowerWrap allows you to package all .dll's and .ocx's inside the executable of your VB program, with no setup or installation to run.

VB-PowerWrap scans a Visual Basic project, wraps the appropriate files, and creates a self-contained file for distribution. Powerful compression creates the smallest .exe possible.

VB-PowerWrap features:
- Compresses all DLL's and OCX's
- Registers appropriate controls on user's machine if needed
- No runtime headaches
- Automatically scans your project for DLLs and OCXs.
- Works with Visual Basic 4, 5 and 6

http://rapidshare.com/files/49884172/Visual.Basic.PowerWrap.v4.3.rar.html

Boyut : 4mb


Bu program ile VB programını, oxc , dll dosyalarını ve her türlü vb bileşenlerini tek bir exe dosyası haline getiriyor. Yani herhangi bir bilgisayarda VB programını otomatik olarak kurup çalıştırabiliyorsun...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

apollaa

ilk sorun için internette pek çok kod bulabilirsin hatta bende varsa gönderirim

ikinci sorun çok kritik. eğer pic ten göndereceğin veri hep aynı byte sayısındaysa oncom olayını kullanabilirsin( tabi RSthreshold değerini ona göre ayarlayacan) ama göndereceğin byte sayıları farklı boyutlarda olursa oncom olayı verileri hep aynı rsthreshold değerine böleceğinden verilerin bölünecektir. ben sana timerle almanı tavsiye ederinm yanlız burada çok önemli bir nokta var. göndereceğin verilerin başında mutlaka bir özel karekter olmalı( daha doğrusu '&' , '['  yada kullanmadığın bi karekter) sen alacağın verileri bölünmeye uğratmadan alman için bu karekteri visual basicte mid$(.....) komutuyla tespit edip öyle değerlendirmelisin. Aksi takdirde verileri yarım yarım alabilirsin.
bu konuda sorusu olanlara yerdım etmeye çalışırım. kolay gelsin.
Vatan Sizden Hizmet Bekler ( Her Alanda)

erdinch

Alıntı yapılan: "apollaa"
ikinci sorun çok kritik. eğer pic ten göndereceğin veri hep aynı byte sayısındaysa oncom olayını kullanabilirsin( tabi RSthreshold değerini ona göre ayarlayacan) ama göndereceğin byte sayıları farklı boyutlarda olursa oncom olayı verileri hep aynı rsthreshold değerine böleceğinden verilerin bölünecektir. ben sana timerle almanı tavsiye ederinm yanlız burada çok önemli bir nokta var. göndereceğin verilerin başında mutlaka bir özel karekter olmalı( daha doğrusu '&' , '['  yada kullanmadığın bi karekter) sen alacağın verileri bölünmeye uğratmadan alman için bu karekteri visual basicte mid$(.....) komutuyla tespit edip öyle değerlendirmelisin. Aksi takdirde verileri yarım yarım alabilirsin.
bu konuda sorusu olanlara yerdım etmeye çalışırım. kolay gelsin.


dostum olayın burasını biraz açabilir misin?Daha önceki bir projemde pic'den gönderdiğim veriler yarım geliyordu ve çözümünü bulamadım.On_comm ile veri alışı yapıyordum.Bunu nasıl düzeltebiliriz?Bu başımıza neden gelir?Ve bununla ilgili küçük bir uygulaman var mı örnek teşkil edebilecek?

Şimdiden teşekkürler..

picusta

ilk gelen bayt PIC'in kaç bayt'lik mesaj gönderecegini söylüyorsa ona göre dinamik olarak On_Comm sayisini degistiremezmiyiz?

apollaa

Alıntı Yapdostum olayın burasını biraz açabilir misin?Daha önceki bir projemde pic'den gönderdiğim veriler yarım geliyordu ve çözümünü bulamadım.On_comm ile veri alışı yapıyordum.Bunu nasıl düzeltebiliriz?Bu başımıza neden gelir?Ve bununla ilgili küçük bir uygulaman var mı örnek teşkil edebilecek?

diyelimki Rthreshold değeri 2 olsun eğer pic ten ardarda 2 karekter       (2 byte) gelirse on_comm olayı oluşur ve gelen veriyi on_comm bloğu içinde;

If MSComm1.CommEvent = comEvReceive Then
incomning=mscomm1.input
text1.text=incoming
end if


şeklinde veriyi alabilirsiniz.
eğer RThreshold değeri 2 iken 3 karekter gelirse sadece iki karekteri alırsın üçüncü karekter ise bir dördüncü karekter gelinceye dek bekler.
aslında şöylede diyebiliriz. RThreshold değerinde ve bu değerin katlarında karekter gönderirsen verileri bölünmeden alabilirsin.
on_comm olayı portta bir değişiklik olduğu zaman, "comEvReceive" olayı ise porttan veri geldiği zaman oluşur. Rthreshold değeri program içinde dinamik olarak değiştirilebilir.
mscomm1.RThreshold=2

gibi
veri alma ve gönderme ile ilgili bir projem var ama ben alma işlemini timer ile yaptım. Biraz bilgisayarı karıştırmam lazım ilerleyen zamanlarda kodu gönderecem.
Vatan Sizden Hizmet Bekler ( Her Alanda)

apollaa

Alıntı Yapdostum olayın burasını biraz açabilir misin?Daha önceki bir projemde pic'den gönderdiğim veriler yarım geliyordu ve çözümünü bulamadım.On_comm ile veri alışı yapıyordum.Bunu nasıl düzeltebiliriz?Bu başımıza neden gelir?Ve bununla ilgili küçük bir uygulaman var mı örnek teşkil edebilecek?

diyelimki Rthreshold değeri 2 olsun eğer pic ten ardarda 2 karekter       (2 byte) gelirse on_comm olayı oluşur ve gelen veriyi on_comm bloğu içinde;

If MSComm1.CommEvent = comEvReceive Then
incoming=mscomm1.input
text1.text=incoming
end if


şeklinde veriyi alabilirsiniz.
eğer RThreshold değeri 2 iken 3 karekter gelirse sadece iki karekteri alırsın üçüncü karekter ise bir dördüncü karekter gelinceye dek bekler.
aslında şöylede diyebiliriz. RThreshold değerinde ve bu değerin katlarında karekter gönderirsen verileri bölünmeden alabilirsin.
on_comm olayı portta bir değişiklik olduğu zaman, "comEvReceive" olayı ise porttan veri geldiği zaman oluşur. Rthreshold değeri program içinde dinamik olarak değiştirilebilir.
mscomm1.RThreshold=2

gibi
veri alma ve gönderme ile ilgili bir projem var ama ben alma işlemini timer ile yaptım. Biraz bilgisayarı karıştırmam lazım ilerleyen zamanlarda kodu gönderecem.
Vatan Sizden Hizmet Bekler ( Her Alanda)

Korhan793

Timer ile veri alma olayı ile ilgili halen bi bilgilendirme gelmemiş bu konuda bilgisi olan var mı-

tnen

Setup oluşturmayı vb nin wizardıyla değilde innosetup ile yaparsan ocx ve dll hatalarının önüne geçebilirsin.Bu konuda nette bilgi olması lazım araştır bir.

hkalaycioglu

visual basic de timer olayı ile yazdığımız bir program vardı  santralden gelen verileri işliyorsuk her saniye comportu kontrol ediyordu santral her seferde 128 byte veri gönderiyordu ve verilerde kayıp yoktu veya timer'ı 500 ms ye ayarlarsın daha sık kontrol eder portu bu şekilde yapabilirsin