Programm / unit

TheBeginner
Schreiberling
Avatar
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Programm / unit

 · 
Posted: 15.06.2020 - 18:09  ·  #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
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: Programm / unit

 · 
Posted: 16.06.2020 - 11:12  ·  #2
Quote by 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
Gender: n/a
Location: Wunsiedel Bayern
Age: 66
Posts: 755
Registered: 06 / 2013
Subject:

Re: Programm / unit

 · 
Posted: 16.06.2020 - 12:37  ·  #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
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   66   80 · Page-Gen-Time: 0.022012s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI