Tmemorystream tthread et temps réel

Signaler
Messages postés
66
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
4 août 2008
-
Messages postés
66
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
4 août 2008
-
try
bonjour,
qqn pourrait-il me tuyauter avec de vrais exemples à l'appui, pourt utiliser les strems de tous genres?
voilà mon problème:
j'ai une appli multithreads. un thread mesure tranquille ses mesures sur le port parallèle. pour l'instant je les transmets à ma fiche pour les afficher via un tthreadlist pour les afficher ds un tlistbox. tt baigne mais au bout de qqs secondes on sent que ça commence à patauger.
l'idée m'est venue d'utiliser les streams pour balancer mes données qui pour l'instant sont brutes (des calculs sont à prévoir avant affichage, et même un graphique raffraîchi régulièrement; le tout devant fonctionner avec 1000 mesures par secondes en continu jusqu'à 3 millions de cycles à 1Hz).
partout je ne trouve que des exemples de streams utilisés dans la mm procédure, alors que moi je cherche à écrire dans une méthode dans un stream, qui pourra être lu dans une autre méthode.
tout ça pour gagner un max de temps processeur et garder un cadencement régulier de mes mesures.
finally
merci à tousssssssssssssssssssss sans exception!
end;

<hr />si Delphi m'était conté...

3 réponses

Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut,

c'est simple tu déclares ta varaible MemoryStream  en variable
globale tu l'affectes dans la première procédure et tu le récupères
dans la seconde

si tu veux un exemple vas voir le module Phone de la source videosurveillance
ICI

 dans la procedure PlayFile je charge le fichier dans le memorystream::
procedure TFPhone.PlayFile(FileName: String);
begin
.

.

.
DataStream.Clear;

DataStream.LoadFromFile(FileName); //charge le fichier

DataStream.Seek(0, soFromBeginning);
SendMessage.Enabled:=true; //envoie le message
end;

que j'utilise dans nextblock

procedure TFPhone.NextBlock;
const
BufSize = 4096;
var
i: Integer;
RData: array[1..4096] of Char;
Data: array[1..9200] of Char;
BytesCount, ReadCount: Longint;
begin
BytesCount := 0;
ReadCount := DataStream.Read(RData, BufSize);
if readcount=0 then
begin
SendMessage.Enabled:=false;
exit;
end;

ici on fait le traitement

.

.

end;


comme tu le vois c'est très simple ce n'est qu'un flux de données 
: C'est comme si tu ouvrais un fichier dans une procédure et que tu
l'utilises dans une autre


@

jlen
Messages postés
66
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
4 août 2008

merci merci merci! je vais étudier ça de trèèèèèèèèèès près ;)









<hr />

si Delphi m'était conté...
Messages postés
66
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
4 août 2008

@jlen: je suis enfin arrivé au point de m'attaquer au stream pour passer mes mesures... une question cependant...la méthode SendMessage a-t-elle qqch à voir avec la bonne utilisation de TMemoryStream ou est-ce employé dans le cadre de ton application?

<hr />si Delphi m'était conté...