Bonjour
une petite précision tu parles de console et de form.cs.
Ce n'est pas la même chose une application console va démarrer dans une fenêtre de commande DOS et 9 fois sur 100 cette fenetre se fermera d'elle même à la fin de l'exécution. Ce qui pourrait correspondre à ton besoin mais je ne suis pas sur que le timer fonctionne dans les applications console.
Le code que tu as posté est une application WinForm et si je comprends bien ta demande, tu ne veux pas avoir à choisir le port via la liste déroulante ni cliquer sur le bouton.
Pour le choix du port forcer le texte du combobox à "COM4" doit résoudre le problème (je ne peux pas essayer je ne pas de port com chez moi...), pour plus de rapidité tu peux sortir cette instruction de la boucle, elle ne sera exécutée qu'une seule fois.
Quand tu clique sur le bouton le code exécuté est celui-ci
Code C# :
private void button_relay1_Click(object sender, EventArgs e)
{
if (button_relay1.Text == "RELAY ON") SerBuf[0] = 0x6F;
else SerBuf[0] = 0x65;
transmit(1);
}
button_relay1_Click est une méthode qui est abonnée au click du bouton mais que tu peux appeller quand tu veux.
Donc au démarrage de ton appli
Code C# :
public Form1()
{
InitializeComponent();
USB_PORT = new SerialPort();
string[] comportnames = new string[100];
comportnames = SerialPort.GetPortNames();
var sortedList = comportnames.OrderBy(port => Convert.ToInt32(port.Replace("COM", string.Empty)));
foreach (string port in sortedList)
{
comboBox_comport.Items.Add(port); // places each "COMx" name into combobox
}
comboBox_comport.Text = "COM4";//j'ai sortit ça de la boucle pour optimiser le code
//ici j'appelle la méthode du bouton
button_relay1_Click(this, new EventArgs);//la méthode demande un objet je lui est mis this qui correspond à l'instance en cours du formulaire et une variable donnant des détails sur l'événement en cours, comme je n'en ai pas j'en crée une toute neuve.
}
Comme je l'ai écrit plus haut je n'ai pas de port com, je n'ai pas testé mais ça devrait marcher.
par contre dans ton code, le timer qui change le type de message envoyé n'est jamais démarré, ce qui me surprends. Il me semblerait logique que tu envoies le premier message, que tu lances un timer de 1s et qu'il envoie le second message.
Ce serait à ce moment que tu pourrais ajouter
Code C# :
qui fermerait l'application.
Whismeril