2010-05-24 4 views
2

J'ai écrit un programme en C pour envoyer un octet au port série (com). J'ai utilisé BIOSCOM pour envoyer des données mais je suppose qu'il n'ouvre pas le port. S'il vous plaît dire comment je peux ouvrir et fermer un port COM en C.port série en C

Mon code est ici:

#define COM1 1; 
bioscom (1 , 65 , COM1); 

S'il vous plaît aidez-moi ...

+1

Cela dépend de la plate-forme que vous utilisez. Les fenêtres? Linux? Quelles versions et saveurs? –

+0

Ce n'est pas une API Linux; deviner win32 ou apparenté. –

+0

salut mon os est winxp – Mehdi

Répondre

0

L'une des API bioscom (numéro d'API 0) est utilisé pour initialiser (pas ouvrir) le port série: par exemple En supposant que le bioscom utilise l'API du BIOS, je pense que le port série n'a pas besoin d'être ouvert: parce que le matériel du port série existe déjà et que le BIOS sort vers le matériel.

Cependant, l'API du BIOS peut être désactivée par le système d'exploitation lorsque le système d'exploitation met le processeur en mode protégé et installe un pilote de périphérique spécifique à l'O/S.

Je ne connais pas bioscom, mais Google finds documentation and examples of how to use it.

+0

salut merci pour votre réponse mon problème na pas résous je peux envoyer/recevoir des données vers/depuis le port com mon os est winxp – Mehdi

+0

i Sett le bisoscom avec api 0 mais il dosnt travail s'il vous plaît aidez-moi – Mehdi

+2

@ user222820 Comment savez-vous que cela ne fonctionne pas (quels sont les symptômes de son ne fonctionne pas)? Compilez-vous votre logiciel en tant qu'exécutable DOS 16 bits? Avez-vous essayé d'autres ports COM? L'API prise en charge (Windows 32 bits) pour l'écriture sur les ports série sous Windows est décrite ici: http://msdn.microsoft.com/en-us/library/ms810467.aspx ... le système d'exploitation peut essayer de soutenir les applications en utilisant l'API BIOS (INT 14h), mais je ne pense pas que ce soit officiellement supporté. – ChrisW

5

j'ai utilisé les API Win32 suivants pour l'ouverture d'un port série dans une ligne de commande utilitaire Win32:

CreateFile - Utilisez la chaîne COMx que le nom de fichier, en remplaçant x avec le numéro du port série.

BuildCommDCB et SetCommState - Utilisé pour définir les paramètres (baud, parité, bases de données, blocs d'arrêt).

ReadFile et WriteFile - Utilisé pour lire et écrire en utilisant la poignée renvoyée par CreateFile.

CloseHandle - Fermez le handle renvoyé par CreateFile.

Recherchez MSDN pour la documentation sur chaque fonction et vous devriez être capable de le faire fonctionner rapidement.

+0

vous pourriez vouloir jeter SetCommTimeouts() là aussi, – JustJeff

+0

Le lien de ChrisW dans le commentaire à sa réponse fournit plus de détails sur l'accès aux ports série avec Win32: http://msdn.microsoft.com/en-us/library/ms810467. aspx – tomlogic