C# Vraagje

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

Plaats reactie
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Ik denk dat je een Lf, Cr of een CrLf krijgt, maar dat je dat niet ziet op het formulier waar je de ontvangen data plaatst.

Het is een kwestie van debuggen.

Wacht even totdat er wat data ontvangen moet zijn, onderbreek het programma en kijk dan in de text box (of wat dan ook) wat je nu echt ontvangen hebt.
Je kunt dit natuurlijk ook in een ander terminal programma doen.

Vervolgens filter je op de ontvangen Cr of Lf en vervang dat door een CrLf. Dat kun je al doen in het event dat de ontvangen karakters afvangt.

Het kan ook zijn dat linewrap van de textbox (of wat dan ook) uit staat. Dan presenteer je de data niet goed!!!

Maar eerst beginnen met controleren wat er echt ontvangen is.

Goed om te zien dat je al een heel stuk op de goede weg bent.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Ik heb inmiddels een "Environment.NewLine;" achter de string gezet.. dat werkt.. nu komt alles door zoals ik het verzend vanaf de Psion.


't enige is nu.. als het programma een bepaalde tijd na het verzenden of ontvangen niets doet, krijg ik een Time-out fout.. eigenlijk moet de poort ofwel gewoon open blijven staan, of open gaan als ik wil ontvangen, en dichtgaan als ik klaar ben.. liefst automagisch.
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Wat je kunt doen is een timer starten en als die op nul loopt, de communicatie stoppen. Zet de tijd van de timer op de gewenste timeout en reset de timer bij elk ontvangen karakter.

Maak een

Code: Selecteer alles

Task void ProcessesTimer
{
  for (;;)
    {
        als timeout, stop de com
       Task.Delay(1000) //wacht een seconde om te voorkomen dat deze routine als een razende de CPU gaat belasten.
    }
}
Roep deze procedure aan als de pagina geladen is en de timeout variabele gezet (op de system time) met

Code: Selecteer alles

Task _t=ProcessTimer();
de _t zorgt voor het voorkomen van foutmeldingen en deze variabele wordt verder niet meer gebruikt.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Hmm. als ik dat zo in de code probeer te zetten.. krijg ik een hele lading foutmeldingen..

Processtimer herkent ie niet.. en met de rest doet ie dus ook niets..
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Het moet zijn: Task void ProcessesTimer() moeten 2 haakjes bij.

Task zal die wel niet herkennen. Als het goed is krijg je dan zo'n geel help ding te zien. Als je daarop klikt, heb je de optie om een

Code: Selecteer alles

using System.Threading.Tasks;
using System.Threading
toe te voegen, heb je alle twee nodig.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

hfjbuis schreef: 12 feb 2022 22:31

Code: Selecteer alles

using System.Threading.Tasks;
using System.Threading
Staan er alletwee in..en ik krijg overal rode lijntjes onder..Ik ga er later nog wel even naar kijken..
Eigenlijk is het raar.. dat ik op zoek ben naar een stukje Code dat vast wel eens eerder geschreven is door iemand.. maar je vindt alleen maar stukken code waar of veel te veel in staat.. of het is een Console applicatie.. (wie schrijft er anno nu in 's hemelsnaam nog console applicaties?)
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Dan stuur mij de test applicatie maar, kijk ik er eens naar.
Arie Kabaalstra schreef: 12 feb 2022 22:50 maar je vindt alleen maar stukken code waar of veel te veel in staat
Ja daar heeft MS wel patent op. Wil je beginnen met iets te leren, krijg je 1000 regels code die niet te volgens is. Of er staan maar een paar regels waar je ook niets mee kunt.
Ook veel YouTube filmpjes over 3D werken met Freecad beginnen met het tekenen van een complex ontwerp. Of ik snap het niet, of....
There are only 2 limits, the sky and your imagination
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 12041
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: VB Vraagje

Bericht door hugo stoutjesdijk »

Het is me al die jaren ook altijd opgevallen hoe slecht je nuttige voorbeelden kon vinden, blijkbaar is dat stukje techniek door weinigen in gebruik, en dan zijn er dus ook niet veel voorbeelden. Maar misschien kun je die timeout gewoon uit zetten.

https://docs.microsoft.com/en-us/dotnet ... at-ext-6.0
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: 13 feb 2022 08:37 Het is me al die jaren ook altijd opgevallen hoe slecht je nuttige voorbeelden kon vinden
Ja.. Ik weet nog dat ik me suf gezocht heb naar een VB Snippet om de inhoud van een textbox of een Listbox naar een textfile te saven, en om een textfile te openen en de inhoud in een textbox of een listbox te zetten..
Dat lijkt me toch één van de meest eenvoudige en meestgebruikte dingen als je een soort Editor maakt.
hugo stoutjesdijk schreef: 13 feb 2022 08:37 Maar misschien kun je die timeout gewoon uit zetten.
Ja.. daar begint het wel op te lijken..Ik heb het C# RS232 projectje nu een tijdje "open staan"

Als ik nu iets van de PC naar de Psion stuur, dan komt alles gewoon aan, alleen als ik het in een bestand probeer te vangen, dan ontbreken er een paar regels aan het einde.. moet ik nog even naar kijken

we klooien gewoon verder, 'k heb hier nog een PC staan. eens zien of ik daar wat leven uit kan krijgen, en dan die 2 machines aan elkaar knopen met de RS 232...
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Voorzichtig een beginnetje gemaakt met een nieuw project, de Editor in C#

echter.. bij het kopiëren van de code voor de Serieële poort krijg ik wederom rode lijntjes..

'k heb alle Usings bovenaan 't zelfde staan, dus :

Code: Selecteer alles

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.Threading.Tasks;
maar bij het beginnetje van de code moet staan:

Code: Selecteer alles

 public partial class Form1 : Form
    {
        SerialPort _serialPort;

        // delegate is used to write to a UI control from a non-UI thread
        private delegate void SetTextDeleg(string text);

        public Form1()
        {
en daar krijg ik onder SerialPort in de eerste regel van die Partial Class een rood lijntje eronder, de Helpcode geeft ook geen thuis.. "Sorry, we don't have specifics on this C# error"..nou.. daar kom je verder mee... Not! volgens de PopUp :

"the type name 'SerialPort' cound not be found in the namespace 'System.IO. Ports'. This typ has been forwarded to 'System.IO.Ports, Version =0.0.0.0... Consider adding a reference to that assembly..

Hoe ga ik dat oplossen?
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Je moet de assembly: system.io en system.io.ports installeren (in deze volgorde)
  • Klik boven in de taakbalk op tools| NugetManager | NugetManger for solutions
  • kik op tabblad browse
  • Vul een regel lager System.Io in (in de zoek regel)
  • Klik op System.Io en vervolgens rechts op installeren
  • Klik op System.Io.ports en vervolgens rechts op installeren
Nu worden de ontbrekende assembly's geïnstalleerd. Letop, dit kan een tijdje duren omdat alles gedownload moet worden.
Onder in de taakbalk van VS2019 zie je dan nog wat bewegen. Wacht tot alles "stil" is en installeer dan het volgende pakket.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

JA!.. Dat werkt!..

Wist ik veel dat je die Delen handmatig moest installeren?.. dat hoort er toch gewoon in te zitten?.. of heb ik het nou mis?
hfjbuis
Donateur
Berichten: 3074
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: VB Vraagje

Bericht door hfjbuis »

Wist ik veel dat je die Delen handmatig moest installeren?.. dat hoort er toch gewoon in te zitten?.. of heb ik het nou mis?
Ja en Nee,

Het zou natuurlijk handig zijn als het er in zat. Maar dat zijn een paar duizend bibliotheken van alleen al NuGet. Er zijn ook nog anderen. Dat zou de ruimte op de schijf aardig belasten. Ook moet er dan heel veel data worden gedownload om te updaten. Daarbij komt dat ook het laden nogal vertraging gaat oplopen.
Het probleem is ook niet dat je moet aangeven dat je een bibliotheek wilt gebruiken, maar dat de foutmelding zo knullig is terwijl ze best wel weten wat ze hadden moeten melden.
Onder de streep mogen we niet zeuren, vroeger stond er alleen "kan ... niet vinden" en dan kon je weer dagen zoeken naar een oplossing. Meestal is dat een voorbeeld programma bekijken (als die het wel doet) en dan het spelletje spelen: Zoek de verschillen.

Ik ben blij dat je het aan de gang hebt gekregen :!:
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13479
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Ok.. ik moet het dus zo zien:

Ik heb een hele schuur vol met gereedschap.. voor houtbewerking, voor loodgieters werk, voor metselwerk, en voor metaalbewerking..
ik ga op klus, en dan kijk ik "Wat moet er gedaan worden?".. ergens een raamkozijn vervangen?.. dan is het timmergereedschap voldoende, dus gooi ik dat in mijn bus.. moet ik een badkamer verbouwen?.. dan heb ik mijn metselgerei, en loodgietersgerei nodig.. en gooi ik dat in de bus..

Ja.. klinkt logisch.. eigenlijk net als dat ik de EMCOturn voor een specifiek onderdeel kan toolen.. als ik volgende week weer middenstukjes voor die horlogebandsleutelhangers ga draaien, dan hoef ik er geen binnendraadbeitel in te hebben, ook geen binnendraai beitel.. dus die gaan er uit, en op positie 7 in de turret schroef ik er dan een boortje 3 in..

Dit is het tweede project in C# wat ik aan het doen ben.. ik ben nog een beginner.. maar goed.. als je nooit wat probeert, en nooit wat vraagt.. kom je nergens.. Volgende stap.. KeyDown Event maken voor het Form, zodat ik middels de F-Toetsen wat dingen kan doen.. de Fysieke knoppen komen later wel.. daar hoef ik dan bij 't click-event alleen maar een Waarde in een Parameter te proppen, en te verwijzen naar de sub die dat afhandelt.. dat kan ik durven..
Plaats reactie