C# Vraagje

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

Moderator: Moderators

Plaats reactie
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

hugo stoutjesdijk schreef: 17 feb 2022 08:15 Iets met On-close of zo??
heb ik geprobeerd..
een Form1-Closing event Handler erin.. met EMComport.Close(). werkt niet.. applicatie bevriest..

de C# applicatie.. die heeft daar geen last van.. en daar heb ik de Readline ook vervangen voor ReadExisting, zodat ook daar de code goed binnen komt..

Nu wel weer een dingetje.. de DataGridview gedraagt zich anders, en in de Textbox werken de pijltjestoetsen niet, moet je met de muis van vakje naar vakje.. ook niet handig..
Huub Buis
Donateur
Berichten: 4223
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek
Has thanked: 5 times
Been thanked: 2 times

Re: VB Vraagje

Bericht door Huub Buis »

Arie Kabaalstra schreef: 17 feb 2022 11:26 de DataGridview gedraagt zich anders, en in de Textbox werken de pijltjestoetsen niet
Dat is omdat je diezelfde toetsen ook gebruikt om bij het editen van de tekst de cursor te positioneren.

TAB en Enter gebruiken om naar de het volgende veld te sprinten
Tabstop disabelen om velden die readonly zijn over te slaan
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Eh.. Nee.. Wacht even.. als ik alleen de Textbox1 open heb staan, en ik heb een stuk Code gedownload, dan kan ik met de Pijltjestoetsen niet door de tekst bewegen.

Ik kan teksten intypen, Enter springt naar een nieuwe regel, Backspace haalt het laatst ingevoerde karakter weg, Delete werkt niet..

Als ik de DataGridview open, en ik wil een waarde invullen, (ik moet nog instellen dat 't eerste invulveld geactiveerd wordt), dan moet ik 2 keer klikken, dan kan ik een waarde invullen, Enter geeft de volgende regel, maar dat veld staat dan geselecteerd, dus helemaal blauw, en ik kan er dan niets in typen.. dan moet ik het eerst met de muis aanklikken om de Cursor te krijgen..

Overigens.. Ik werk momenteel weer in C#..
Huub Buis
Donateur
Berichten: 4223
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek
Has thanked: 5 times
Been thanked: 2 times

Re: VB Vraagje

Bericht door Huub Buis »

Als je toetsen afvangt, moet je e.handled alleen zetten als je daadwerkelijk die toets hebt geprocessed en niet wilt dat een ander process deze ook nog processed.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

Damn!.. je hebt gelijk.. Ok.. die moet ik er dan alleen ingooien bij F10.. want anders blijft ie "hangen".. Google er maar eens op.. iedereen die een Applicatie bouwt met Functietoetsen om bepaalde dingen te doen loopt hier een keer tegenaan..
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: VB Vraagje

Bericht door Arie Kabaalstra »

EMCOturn 120 .jpg
Dit heb ik nu tot dusver..
boven en onderin het venster heb ik kaders toegevoegd.. hoe?.. gewoon met Buttons.. alleen hebben ze (nog) geen Click_event.
Middenboven zoals te zien is, staat"... SENDING...", zolang de applicatie de data door de RS232-poort seinsleutelt.
zodra ik een programma aan het bewerken ben, middels een dialoog, gooit de applicatie de poort dicht.
zodra je een Dialoog sluit, gaat de poort weer open..

Verzenden van een programma staat nu onder F12 (de Click-Event voor die knop moet ik nog aanmaken.. maar eerst heb ik eigenlijk gezorgd dat de GUI zo is als ik em wil hebben.. dat wil zeggen dat de knoppen netjes onderin het scherm verdeeld blijven of je nou maximaal scherm hebt, of niet.. (da's iets wat EdingCNC nog altijd niet heeft.. en ik vind dat slordig eigenlijk)

er moet nog een knop gereserveerd worden voor Bestand nieuw, bestand opslaan, of venster wissen voordat je een bestand binnenhaalt.. anders plakt ie het er gewoon onder.. en da'hoort nie... misschien wel een idee om de poort handmatig open te zetten als je wilt ontvangen..
als je wilt verzenden gaat de poort vanzelf open..
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

'k heb de Topicnaam maar even veranderd.. C# it is vanaf nu..

Nu heb ik in die Applicatie een aantal toetsen af te vangen.. waaronder de 12 F-Keys.
Die hebben ASCII Code 112-123 (note to self if e.keyvalue=121, e.handled =true)

Nou vraag ik me af.. Kan ik zeg maar, voor de Functietoetsen een aantal "Genummerde" Subroutines maken, en die vanuit het Keydown event, op grond van de ASCII Code aanroepen?.. Enumeration?..

iets in de trant van :
IF keyvalue>=112 && Keyvalue<=123
sub functietoets(Keyvalue)

Kan dat?
Huub Buis
Donateur
Berichten: 4223
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek
Has thanked: 5 times
Been thanked: 2 times

Re: C# Vraagje

Bericht door Huub Buis »

Code: Selecteer alles

 private void MainPage_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.F1:
                case VirtualKey.F2:
                case VirtualKey.F3:
                case VirtualKey.F4:
                case VirtualKey.F5:
                case VirtualKey.F6:
                case VirtualKey.F7:
                case VirtualKey.F8:
                case VirtualKey.F9:
                case VirtualKey.F10:
                case VirtualKey.F11:
                case VirtualKey.F12:
                    iCommandProcessor.RaiseEvent("FunctionKeyPressed", e);
                    break;
            }
        }
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Dat ziet eruit als een mooie elegante oplossing..maar hoe gaan mijn subroutines (void) eruitzien dan?
Huub Buis
Donateur
Berichten: 4223
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek
Has thanked: 5 times
Been thanked: 2 times

Re: C# Vraagje

Bericht door Huub Buis »

Code: Selecteer alles

private void ProcessF11( KeyRoutedEventArgs e)
{
  e.handeld=true;
}
private void ProcessF12( KeyRoutedEventArgs e)
{
  e.handeld=true;
}

  private void MainPage_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            switch (e.Key)
            {
                case VirtualKey.F1:
                case VirtualKey.F2:
                case VirtualKey.F3:
                case VirtualKey.F4:
                case VirtualKey.F5:
                case VirtualKey.F6:
                case VirtualKey.F7:
                case VirtualKey.F8:
                case VirtualKey.F9:
                case VirtualKey.F10:
                  break;
                case VirtualKey.F11:
                      ProcesssF11(e);
                    break;
                case VirtualKey.F12:
                    ProcesssF12(e);
                    break;
            }
        }
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Code: Selecteer alles

private void si_DataReceived(string data)
        {
            
            textBox1.Text = textBox1.Text + data ;
            textBox1.SelectionStart = textBox1.TextLength;
            textBox1.ScrollToCaret();
            button13.Text = "RECEIVING";
            button18.Text = data.ToString();
            if (button18.Text.Contains("M30"))
            {
                _serialPort.Close();
                button17.Text = "RS232_CLOSED";
                button13.Text = "";
            }
               
        }
Dat heb ik inmiddels wel voor elkaar.. zodra de code M30 bevat, gooit ie de poort dicht..
Ook geef ik middels buttons de status van ontvangen en Poortstatus weer.. waarom Buttons?..omdat ik die makkelijk een kleurtje kon geven..

't openen en sluiten van de poort, en het invullen van de diverse buttons, dat ga ik nog even in Aparte subs gooien.. dan hoef ik alleen maar PortOpen(); of PortClose(); in de code te zetten.. de rest gaat dan automagisch.

gedachtengang nu: bij opstarten is de poort Dicht.. ,wil je een programma binnenhalen vanaf de machine, zet je de poort open (F11), dan komt er bovenin in het midden "...READY TO RECEIVE..." te staan..
Zodra er een Datastroom binnenkomt, wordt dat "...Receiving...".. tot de Applicatie "M30" tegenkomt in de string, dan gooit ie de boel dicht..
(ik kan dan ook even kijken naar "%" of "O", en dan het nummer erachter uit de string peuteren.. da's altijd een reeks van 4 cijfers.. dus dat kan niet heel ingewikkeld zijn.
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Ik begin meer en meer mijn weg te vinden in C#.. sommige dingen zijn lastiger, andere dingen weer veel simpeler dan in VB.NET..
Zo zoetjes aan begin ik ook te begrijpen waar die Accolades moeten staan, en waar wel, en waar niet die ;'s

Momenteel heb ik het zover dat Ik de poort open kan zetten met F11, zodat er wat van de machine kan binnenkomen.. zodra ie een M30 ziet, gooit ie de poort dicht..
Gek genoeg komen de laatste 2 lege regels nog wel door.. als dat vanaf de machine niet gebeurt, is het een klein kunstje om ze alsnog toe te voegen..
Middels F12 gooit ie de poort ook open.. zodra't laatste bitje erdoor is.. Klap!.. poort dicht.. Dat wordt ook weergegeven in de Statusbar onderin,
Bovenin in de statusbar staat "...RECEIVING..." als er data binnenkomt, en "...Sending" als er Data binnenkomt.

Waar ik nog wel hoofdpijn met zijwieltjes van krijg.. waarom is het "textBox", met een kleine letter aan het begin, maar .Text met een hoofdletter, en .ReadOnly.. ook met 2 hoofdletters..

nu eerst de boel nog even "opnetteren".. lege regels en overbodige Comments weghalen, Accolades netjes uitlijnen, en dan eens kijken of we dat foefje met die 12 Functietoetsen en bijbehorende Subs aan de praat krijgen..
Huub Buis
Donateur
Berichten: 4223
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek
Has thanked: 5 times
Been thanked: 2 times

Re: C# Vraagje

Bericht door Huub Buis »

Arie Kabaalstra schreef: 18 feb 2022 19:44 Accolades netjes uitlijnen,
In VS2019 ( VSC en Arduino IDE en etc) zit een optie om dit automatisch te doen. Die moet je gebruiken want dit soort dingen kosten teveel tijd.
Je kunt dit doen via Edit | Advanced | Format Document.
Je kunt het knoppen circus aanpassen en deze functie als een button toevoegen. Dat is wat gemakkelijk om te gebruiken.
Arie Kabaalstra schreef: 18 feb 2022 19:44 odra ie een M30 ziet, gooit ie de poort dicht..
Gek genoeg komen de laatste 2 lege regels nog wel door.
Het dicht gooien van de poort kost tijd en er kan ook nog wat in de buffer zitten. Het is beter om te wachten totdat al het gestuurde ook echt ontvangen is, anders krijg je dat weer binnen als je de poort weer open gooit.
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Berichten: 14959
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

hfjbuis schreef: 18 feb 2022 23:02 Het dicht gooien van de poort kost tijd en er kan ook nog wat in de buffer zitten. Het is beter om te wachten totdat al het gestuurde ook echt ontvangen is, anders krijg je dat weer binnen als je de poort weer open gooit.
Mja.. daar zeg je zo wat.. maar hoe bepaal ik dat?.. 't eind van een programma is altijd M30.. en alles wat daarna nog kan komen zijn lege regels.. dus op zich is dat geen bezwaar..

Om het zeker te weten, moet ik het op de machine testen.. maar dan moet ik er eerst een versie van bouwen die op XP draait, en 't liefst met alle DOTNET Redistributables erbij.. anders wil het niet werken.. en om die er bij te zoeken.. da's ook een gedoe..
Plaats reactie