Comment continue de lire Serial port COM dans Powershell et occasionnellement d'écrire pour le port COM

J'ai besoin de savoir comment je continue de lire les données à partir du port COM et le vider dans un fichier à l'aide de Windows Powershell. Alors que je suis de la lecture des données, j'ai aussi besoin de surveiller les données en cours de lecture et, en fonction de ce que la dernière ligne a été de lire, d'écrire des données sur le port COM.

Pour ouvrir le port COM dans Powershell, je suis en train de faire ceci:

[System.IO.Ports.SerialPort]::getportnames()
$port= new-Object System.IO.Ports.SerialPort COM3,115200,None,8,one
$port.open()

Pour lire les données dans le port COM, je suis en train de faire ceci:

$line=$port.ReadLine()

Ma première pensée a été d'avoir le principal script Powershell ouvrir le port COM. Ensuite, il serait de démarrer un arrière-plan/enfant tâche continue de lire des données à partir d'un port COM et le vider dans un fichier. Tandis que l'enfant de la tâche est en cours d'exécution, le parent serait alors de surveiller en permanence le fichier et écrire sur le port COM en cas de besoin.

Quand j'ai essayé de le faire, l'enfant ne pouvait pas lire les données à partir du port COM, parce que la mère l'avait ouverte, et l'enfant n'hérite pas de cette autorisation de la part du parent.

Des idées sur comment je peux faire cela?

  • pouvez-vous simplement lire le $line variable à chaque fois son créé et de faire ce que vous devez à ce moment s'il correspond aux critères, tandis que simultanément la journalisation via Out-File ou quelque chose pour l'enregistrement?
  • Je ne suis pas très bon avec les watchers, mais je sais que vous pouvez regarder un dossier pour les modifications de fichiers, vous pouvez regarder un port com de l'activité, et de réagir quand il arrive?
  • Je viens de mettre en place une boucle while qui aurait lu dans une ligne, l'enregistrer dans un fichier, puis a fait quelques vérifications sur cette ligne afin de déterminer si elle a besoin d'écrire pour le port COM. Malheureusement, Powershell semble avoir des problèmes de lecture des lignes qui ne se termine pas par un caractère de saut de ligne ou un retour chariot, comme un linux en ligne de commande. ReadLine() ne parvient pas à lire dans le "prompt" lignes. Toutes les idées sur la façon de contourner cela?
  • headinabook avez-vous trouvé la solution ? merci de partager... je suis aussi en train d'essayer de lire en continu à partir d'un port série.
  • Avez-vous besoin pour utiliser Windows Powershell, ou vous pouvez utiliser un autre programme?
  • Je suis à l'aide de Powershell..... J'ai utilisé ReadExisting() qui a résolu mon problème... savez-vous comment faire pour envoyer le code ASCII en série dans powershell... je veux écrire le code ASCII sur port série pour la MAJ, F1, F2, F3 et F4 clés

InformationsquelleAutor headinabook | 2015-07-08