Programm / unit

TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Programm / unit

 · 
Gepostet: 15.06.2020 - 18:09 Uhr  ·  #1
In mein Hauptprogramm habe ich Init Socket erstellt
Code

   //Init Socket
  SockHandle:= wzCreateSocket;
  u.s.w......


Nun habe ich aber noch eine zweite Unit uSDCard; von dieser Unit
kann ich aber nicht senden, weil das Programm die SockHandle nicht
findet
wzSendBuffer(SockHandle, @SendStr+1, len);

Wie kann ich in meiner 2ten Unit das Programm einbinden,
oder geht das nicht ?

Oder muss ich in der zweiten unit ein eigenen SockHandle erstellen ?


Gruß Frank
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1344
Dabei seit: 02 / 2009
Betreff:

Re: Programm / unit

 · 
Gepostet: 16.06.2020 - 11:12 Uhr  ·  #2
Zitat geschrieben von TheBeginner

In mein Hauptprogramm habe ich Init Socket erstellt
Code

   //Init Socket
  SockHandle:= wzCreateSocket;
  u.s.w......


Nun habe ich aber noch eine zweite Unit uSDCard; von dieser Unit
kann ich aber nicht senden, weil das Programm die SockHandle nicht
findet
wzSendBuffer(SockHandle, @SendStr+1, len);

Wie kann ich in meiner 2ten Unit das Programm einbinden,
oder geht das nicht ?

Oder muss ich in der zweiten unit ein eigenen SockHandle erstellen ?


Gruß Frank


Hallo Frank,

über diese Probleme wirst Du immer wieder stolpern. Mein aktuelles Projekt besteht aus 12 Units.

Ich habe eine Globale Unit, dort sind alle Globalen Variablen enthalen, diese sind dann in allen anderen Units als "uses" eingebunden. Dann gibt es eine Unit "PrjType", hier sind alle Consts und Types enthalten.

In meiner LAN-Unit sind dann:
Code
uses PRJ_Global, PRJ_SDCARD, PRJ_WD;
uses uWzTnSMTP, uWzTINA5xx;


In meiner Main:
Code
uses UFAT16_32, PRJ_Type, PRJ_Tool, RTC, LCD, PRJ_WD, PRJ_Global; 
uses PRJ_Door, PRJ_SDCARD, PRJ_ZKS, PRJ_IO, PRJ_USB; 


In meiner Display Unit:
Code
uses PRJ_Global, PRJ_SDCARD, PRJ_LAN, PRJ_WD, PRJ_Tool;

usw.
Du wirst über diese Verzweige beim Compiler immer wieder stolpern.

Meine wichtigen Routinen arbeiten als Taks/Prozesse:
-Main
-USB
-LAN
-ZKS
-SDCard
-ModBus

Wenn ich nun Daten über LAN oder USB verschieben möchte, nutze ich eine Pipe und sende die Daten in die Pipe. z.B. im USB Task prüfe ich ob weitere/neue Daten in der Pipe liegen und sende diese dann. Es ist immer die Frage wie Du das ganze regeln willst.

Thorsten
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: Programm / unit

 · 
Gepostet: 16.06.2020 - 12:37 Uhr  ·  #3
Danke Thorsten für die Info.

Ich hatte das auch gemacht, alles was mit W5500 zu tun hat habe ich
in der Unit uSDCard abgelegt und dann ging es.


Code

//W5500  var go  ===============================================================  USB
  LED[@PortF, 1]   : bit;
  SockHandle       : tSocketHandle;
  UDPBuff          : array[0..63] of byte;  //eingang
  SendBuff         : array[0..63] of byte;  //ausgang
  TempStr          : string[16];
  ReceivedSize     : word;
  CurRxSize        : word;
  n                : word;
  MarkCount        : byte;
  cmd              : byte;
//W5500  var ende  =============================================================  USB



Gruß Frank
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 8 · Cache Hits: 14   67   81 · Page-Gen-Time: 0.018179s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI