delphi en seriele connecties

Pagina: 1
Acties:
  • 220 views sinds 30-01-2008

  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
ik wil graag dat mijn delphi programma kan verzenden en ontvangen (niet met bestanden over het netwerk, maar direct van het ene programma naar het andere).
ik heb in de een andere topic ([rml][ Delphi] Simpel COM poort lezen/schrijven[/rml]) wel een stukje programma gevonden dat zou moeten helpen, maar het werkt niet.
dit was het stukje code:
ComFile := CreateFile('COM1', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

if ComFile = INVALID_HANDLE_VALUE then Exit;
TextToSend := 'AT' + #13#10;
if not WriteFile(ComFile, TextToSend[1], Length(TextToSend), BytesWritten, nil) then Exit;

als ik dit zo lees zou dit een "bestand" moeten maken die direct verbonden is met com1 (klopt dit?).
maar dit werkt niet, ik weet namelijk de type van de variabelen niet.

er is vast wel iemand die mij kan helpen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Ja, het is een bestand. Dat lijkt me redelijk logisch aangezien je 'm met create file aanmaakt (zou je in de manual kunnen vinden :) )

Daarnaast snap ik niet wat je met de types bedoeld. Ik ben niet zo heel erg bekend met Delphi, maar kan zo achterhalen wat de types van verschillende waardes zijn. Ik denk zelfs dat ik je fout al gevonden heb. Maar daarvoor moet je gewoon ff goed kijken wat je nu werkelijk wegschrijft (het wegschrijven gebeurt met WriteFile)


Owh ja, en lees mijn verhaaltje anders gewoon nog een keertje door als het je niet helemaal duidelijk is.

[ Voor 0% gewijzigd door Janoz op 16-09-2002 14:30 . Reden: ff typefoutje verwijderd ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
ik bedoel eigenlijk: wat voor type is ComFile? hoe noteer ik dat in de VAR regel? en dat ook voor enig andere variabelen.

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Wat returned CreateFile? Van dat type moet ComFile zijn. Het is winAPI, dus het zal wel gewoon THandle zijn. var ComFile: THandle

Maaruhh, dit gaat over seriele communicatie. dmv van een seriele poort op de pc. hardware dus. Als jij communicatie over een netwerk wil direct van programma naar programma zit je op de verkeerde weg. Tenzij je je programma's via een seriele kabel wil verbinden. :) Jij zoekt (tcp/ip) sockets. Daar zijn in Delphi hele nette componenten voor.

We adore chaos because we like to restore order - M.C. Escher


  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
maakt niet uit of het serieel of netwerk is, als het maar werkt.

over tcp heb ik ook wel gekeken, maar dan is de vraag: wat moet ik hier allemaal invullen? (computernaam?)
SocketConnection1.ServerName := '...';
SocketConnection1.Address := '...';
SocketConnection1.Port := ...;

dus ik denk, laat ik het bij serieel houden (schijnt makkelijker te zijn)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik kan het mis hebben, maar ik krijg de indruk dat je nog te weinig kennis hebt van beide om het te laten werken.

Seriele communicatie direct met de winAPI is geen simpele zaak, er zijn componenten die je leven een stuk aangenamer maken omdat zij die winAPI van je afschermen (zoek even op www.torry.net). En ik moet nogmaals benadrukken dat je dan ook op beide computers een seriele poort moet hebben en ze beide met een seriele nul-modem kabel moet doorverbinden.

Socket maken gebruik van het computernetwerk dat er waarschijnlijk al ligt. Als je voor seriele communicatie componenten gebruikt verschild de moeilijkheidsgraad tussen beide weinig.

ServerName is de computernaam waar je mee wilt verbinden of je vult bij Address het ip adres in van die computer. Port is de poort waar de 1 naar toe zend en de ander op luisterd zodat ze met elkaar kunnen communiceren. Dezelfde analogie als met je com poorten.

We adore chaos because we like to restore order - M.C. Escher


  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
badank! ik heb op www.torry.net een werkend programma gevonden die ik wel kan integreren met de mijne.

  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
owkee, torry werkt niet echt. nog info om per netwerk aan de gang te krijgen? ik heb wel het idee dat ze proberen te connecten, maar het beeld wordt niet bijgewerkt en hij komt niet uit de lus.

  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
misschien heeft er iemand een voorbeldprogramma voor netwerken in delphi 6 ?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:12

Creepy

Tactical Espionage Splatterer

Wat heb je zelf al geprobeerd? Wat gaat er mis? Wat voor error meldingen krijg je?
(om maar een oude quote van stal te halen "Mijn glazen bol is helaas kapot" ;) )

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

En wat gebruik je? Seriele communicatie of Sockets?

We adore chaos because we like to restore order - M.C. Escher


  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
ik heb de volgende stukjes code in mijn programma:

netconn.ServerName := '026_02';
netconn.Address := '026_02';
netconn.Host := '026_02';
netconn.Port := 55555;
netconn.Open;
if netconn.Connected then beep;

deze blijft vermoedelijk hangen op .Open nadat ik 2 x de volgende error heb weggeklikt (die je niet ziet als je de exe buiten delphi om opent):
Project scanner001.exe raised exception class ESocketError with message 'Windows socket error: (10049), on API 'connect''. Process stopped. Use Step or Run to continue.

netconn.ServerName := '026_03';
netconn.Address := '213.??.??.?';
netconn.Host := '026_03';
netconn.Port := 55555;
netconn.CleanupInstance;
netconn.Free;
memo1.Text := netconn.GetServerList;
if netconn.Connected then beep;

voor deze geld hetzelfde als hierboven. ik heb al ervaren dat bij address ip of naam niet uitmaakt, hij vraagt toch om een string

netconn is een SocketConnection
memo1.text is een memobox

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Johnny5 schreef op 17 September 2002 @ 11:27:
ik heb de volgende stukjes code in mijn programma:

netconn.ServerName := '026_02';
netconn.Address := '026_02';
netconn.Host := '026_02';
Je moet netconn.Address zetten naar het IP-adres van je andere machine. Of bij netconn.Host de netwerknaam van de andere computer invullen. Hoeft niet allebei tegelijk. Het Address wat jij invult is iig fout.
Project scanner001.exe raised exception class ESocketError with message 'Windows socket error: (10049), on API 'connect''. Process stopped. Use Step or Run to continue.
Deze error betekent volgens mij 'unable to establish connection' (ik kan die lijst nooit terugvinden :( ) en dat kan kloppen want je ip adres klopt niet.
netconn.ServerName := '026_03';
netconn.Address := '213.??.??.?';
netconn.Host := '026_03';
netconn.Port := 55555;
netconn.CleanupInstance;
netconn.Free;
memo1.Text := netconn.GetServerList;

if netconn.Connected then beep;
En dan moet je natuurlijk niet het netconn gaan opruimen terwijl je er nog mee gaat werken :)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

SocketConnection? Was dat voor een component? Wat is er mis met Delphi's TClientSocket en TServerSocket? Of TtcpClient en TtcpServer? Of TidTCPClient en TidTCPServer?

We adore chaos because we like to restore order - M.C. Escher


  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
ok tnx. dat opruimen was puur een wanhoopsdaad :)

netconn.ServerName := '026_03';
netconn.Host := '026_03';
netconn.Port := 55555;
netconn.Open;

werkt nu volgens mij wel, maar volgens mij moet die 026_03 pc wel de connectie accepteren, hoe doe ik dat dan?

  • Johnny5
  • Registratie: Oktober 2001
  • Laatst online: 30-08-2025
LordLarry, die heb ik helemaal niet :/

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Ik sta niet toe dat dit een 'bij het handje neem' topic wordt.

Johnny, begin eens met het doornemen van de help over de objecten die LordLarry heeft genoemd, en zoek er ook eens op bij google (icm tutorial oid) (voorbeeld). Het is namelijk niet de bedoeling dat we het hier volledig voor je voor gaan kauwen. Als je dat allemaal doorgenomen hebt en nog steeds met problemen rondloopt, stuur me dan maar ff een mailtje/icq-tje en dan doe ik 'm wel weer open.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.