Selamlar arkadaşlar. delphi kullanıyorum ve delphinin içerisinde hazır bir component veya kod yok rs232 bağlantısı için bildiğim kadarıyla. bunun için bi kaç component indirdim ama performanslı bişeyler değil string olarak porta write filan yapıyo. biraz yüzeysel yani componentler. delphi ile pic arasındaki rs232 bağlantısını delphi tarafında nasıl çözebilirim bilgisi olan varmı. teşekkürler.
function TForm1.OpenCom(SerLinka : PChar) : boolean;
var
fSuccess : boolean;
dcb : TDCB;
TimeOuts : COMMTIMEOUTS;
begin
hCom := CreateFile(SerLinka,GENERIC_READ or GENERIC_WRITE,0,NIL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(hCom = INVALID_HANDLE_VALUE) then begin
Application.MessageBox('Uygunluk hatası !' , ApplicationName, MB_OK);
OpenCom := False;
exit;
end;
fSuccess := GetCommState(hCom, dcb);
if(not fSuccess ) then begin
Application.MessageBox('Okuma hatası !', ApplicationName, MB_OK);
OpenCom := False;
exit;
end;
dcb.BaudRate := 19200; //change of parameters
dcb.ByteSize := 8;
dcb.Parity := NOPARITY;
dcb.StopBits := ONESTOPBIT;
dcb.Flags := $00000001; //only fBinary = 1
fSuccess := SetCommState(hCom, dcb); //write of parameters back
if(not fSuccess) then begin
Application.MessageBox('Yazma hatası !', ApplicationName, MB_OK);
OpenCom := False;
exit;
end;
TimeOuts.ReadIntervalTimeout := 50; //set of timeouts
TimeOuts.ReadTotalTimeoutMultiplier := 50;
TimeOuts.ReadTotalTimeoutConstant := 100;
TimeOuts.WriteTotalTimeoutMultiplier := 50;
TimeOuts.WriteTotalTimeoutConstant := 100;
fSuccess := SetCommTimeouts(hCom,TimeOuts);
if(not fSuccess) then begin
Application.MessageBox('Zaman aşımı !', ApplicationName, MB_OK);
OpenCom := False;
exit;
end;
//clear of buffers
fSuccess := PurgeComm(hCom,PURGE_TXABORT+PURGE_RXABORT+PURGE_TXCLEAR+PURGE_RXCLEAR);
if(not fSuccess) then begin
Application.MessageBox('Buffer hatası !', ApplicationName, MB_OK);
OpenCom := False;
exit;
end;
OpenCom := True;
end;
mail adresimden bağlantı kurarsan daha ayrıntılı bir delphi programı gönderebilirim...
Axanc
Bu windowsun kendi sistem kaynaklarını mı kullanıyor? W2000 ve XP de de çalışıyormu?
tabiki kendisi direk erişim istediği için NT tabanlılarda çalışma olasılığı düşük, daha denemedim..
http://sourceforge.net/projects/tpapro/
async pro gayet maharetli işletim sistemi sorunuda bulunmamaktadır
Com1->PutChar(deger);
Ben TComPort diye bir component kullanıyorum. XP de de çalışıyor hiç bir sorununu şimdiye kadar görmedim
http://delphi.icm.edu.pl/ftp/d60free/as182d6.zip
http://delphi.icm.edu.pl/ftp/d60free/as200d6.zip
http://delphi.icm.edu.pl/ftp/d20free/ciacomport.zip
bu kısayollar delphi için ı/o komponentleridir . sanırım işinize yarar
ayrıntı için http://delphi.icm.edu.pl bakınız
Alıntı yapılan: birumher - 16 Ağustos 2004, 14:48:12
Ben TComPort diye bir component kullanıyorum. XP de de çalışıyor hiç bir sorununu şimdiye kadar görmedim
Selam acaba delphiden pice nasıl değer gönderiyorsunuz.. ve picde nasıl o değeri alıp karşılaştırma yapıyorsunuz.. örnek verebilirmisiniz..
kolay gelsin..
com portu actiktan sonra
Com1->PutChar(deger);
yukaridaki komutla gonderme yaparsin bilgisayardan
asagidakide ccs c dilinde yazilmis program ornegi kesme ile bilgiler kac bayt gonderiyosaniz okadar baytlik dizinin icine getc() komutuyla kaydediliyor..
asagidaki ornekte 12 baytlik veri kaydedilir...
#int_rda
void kesme(void)
{
char sayac=0;
gelenveri[sayac]=getc();
if(++sayac==12)
sayac=0;
}
Alıntı yapılan: justice_for_all - 26 Ekim 2010, 22:09:47
com portu actiktan sonra
Com1->PutChar(deger);
yukaridaki komutla gonderme yaparsin bilgisayardan
asagidakide ccs c dilinde yazilmis program ornegi kesme ile bilgiler kac bayt gonderiyosaniz okadar baytlik dizinin icine getc() komutuyla kaydediliyor..
asagidaki ornekte 12 baytlik veri kaydedilir...
#int_rda
void kesme(void)
{
char sayac=0;
gelenveri[sayac]=getc();
if(++sayac==12)
sayac=0;
}
Selam Teşekkür ederim.. arada usb ro rs232 kullandığım için sorun yaşıyordum.. picten bilgisayara veri aktarabiliyordum.. ama pc den pice aktaramıyordum.. sonradan masaüstü bilgisayarımdaki COM portu kullandığımda sorun olmadığını fark ettim.. bütün sorun aradaki usb çeviricide imiş.. JALv2 ve Delphi kullanarak gayet güzel bir iletişim sağladım.. ileride bir makale yazmayı düşünüyorum..
Kolay gelsin...
Alıntı yapılan: 3L3CTRO - 27 Ekim 2010, 00:20:54
Alıntı yapılan: justice_for_all - 26 Ekim 2010, 22:09:47
com portu actiktan sonra
Com1->PutChar(deger);
yukaridaki komutla gonderme yaparsin bilgisayardan
asagidakide ccs c dilinde yazilmis program ornegi kesme ile bilgiler kac bayt gonderiyosaniz okadar baytlik dizinin icine getc() komutuyla kaydediliyor..
asagidaki ornekte 12 baytlik veri kaydedilir...
#int_rda
void kesme(void)
{
char sayac=0;
gelenveri[sayac]=getc();
if(++sayac==12)
sayac=0;
}
Selam Teşekkür ederim.. arada usb ro rs232 kullandığım için sorun yaşıyordum.. picten bilgisayara veri aktarabiliyordum.. ama pc den pice aktaramıyordum.. sonradan masaüstü bilgisayarımdaki COM portu kullandığımda sorun olmadığını fark ettim.. bütün sorun aradaki usb çeviricide imiş.. JALv2 ve Delphi kullanarak gayet güzel bir iletişim sağladım.. ileride bir makale yazmayı düşünüyorum..
Kolay gelsin...
merhaba 3L3CTRO hocam;
acaba makalenizi yazdınız mı ?