De situatie is als volgt:
Ik heb een PC-applicatie die communiceert via de COM-port met een microcontrollerbordje.
Voor het programmeren van de PC-applicatie gebruik ik componenten van TurboPower Async Professional 4.06.
De COM-port wordt gebruikt i.c.m. een statemachine om netjes een protocol te volgen.
Hierbij worden datapaketten uitgewisseld. Nu wordt in de statemachine de data ontvagen en weggeschreven in een AnsiString (dit is altijd zo met dit component daar is helaas niets aan te doen). Dit is vervelend want in de paketten komen ook NULL characters voor de AnsiString is hierdoor incompleet omdat, zoals jullie vast wel weten worden AnsiStrings afgesloten met een NULL character.
Ik heb geprobeerd om direct vanuit de statemachine de COM-port aan te spreken en om op de COM-port direct een trigger te zetten die de binnengekonen data aan de statemachine doorgeeft. Helaas raakt de statemachine in de war, die heeft zelf ook triggers op de COM-port staan waardoor hij in de soep loopt.
Verder kan ik wel in de statemachine een Memo-veld vullen waarbij bij een NULL character een nieuwe regel aangemaakt wordt. Dit is alleen niet zo betrouwbaar als er meerdere NULL characters achter elkaar komen wordt er niet idere keer een nieuwe regel aangemaakt.
Ook weet ik dat een AnsiString eigenlijk een array is en dat bij een NULL character een nieuwe lijn aangemaakt wordt, ik weet alleeen niet of ik gepasserde lijnen ook nog terug kan lezen (indexnr?). De c_str methode heb ik geprobeerd maar gaat hier niet op.
Dus heeft iemand een idee hoe ik een AnsiString kan reconstrueren, of misschien wel een andere oplossing voor dit probleem?
Ik heb een PC-applicatie die communiceert via de COM-port met een microcontrollerbordje.
Voor het programmeren van de PC-applicatie gebruik ik componenten van TurboPower Async Professional 4.06.
De COM-port wordt gebruikt i.c.m. een statemachine om netjes een protocol te volgen.
Hierbij worden datapaketten uitgewisseld. Nu wordt in de statemachine de data ontvagen en weggeschreven in een AnsiString (dit is altijd zo met dit component daar is helaas niets aan te doen). Dit is vervelend want in de paketten komen ook NULL characters voor de AnsiString is hierdoor incompleet omdat, zoals jullie vast wel weten worden AnsiStrings afgesloten met een NULL character.
Ik heb geprobeerd om direct vanuit de statemachine de COM-port aan te spreken en om op de COM-port direct een trigger te zetten die de binnengekonen data aan de statemachine doorgeeft. Helaas raakt de statemachine in de war, die heeft zelf ook triggers op de COM-port staan waardoor hij in de soep loopt.
Verder kan ik wel in de statemachine een Memo-veld vullen waarbij bij een NULL character een nieuwe regel aangemaakt wordt. Dit is alleen niet zo betrouwbaar als er meerdere NULL characters achter elkaar komen wordt er niet idere keer een nieuwe regel aangemaakt.
Ook weet ik dat een AnsiString eigenlijk een array is en dat bij een NULL character een nieuwe lijn aangemaakt wordt, ik weet alleeen niet of ik gepasserde lijnen ook nog terug kan lezen (indexnr?). De c_str methode heb ik geprobeerd maar gaat hier niet op.
Dus heeft iemand een idee hoe ik een AnsiString kan reconstrueren, of misschien wel een andere oplossing voor dit probleem?