CSerialPort v1.29

Original: http://www.naughter.com/serialport.html

Naughter Software Logo

 

CSerialPort Logo CSerialPort v1.29 classe A C++ pour Win32 ports série

Bienvenue sur CSerialPort, une classe C++ de freeware pour soutenir l’accès à l’utilisation d’API Win32 avec ports série.
Caractéristiques
  • Interface C++ simple et propre.
  • Utilisations des exceptions C++ plutôt que le Win32 normal retournent mécanisme de valeur. Cela garantit que le code qui utilise la CSerialPort est plus robuste.
  • Unicode activé, prend en charge l’intégration facultative avec MFC par l’intermédiaire de valeur préprocesseur CSERIALPORT_MFC_EXTENSIONS et tout le code compile proprement au niveau d’avertissement 4 et / analyse propre.
  • Supports se chevauchaient, blocage et rappel des modèles d’utilisation du port série.
Le fichier zip joint contient le code source de CSerialPort et un programme de test simple qui exerce toutes les classes de l’API.
Droit d’auteur
  • Vous êtes autorisé à inclure le code source dans n’importe quel produit (commercial, shareware, freeware ou autre) quand votre produit est libéré sous forme binaire.
  • Vous êtes autorisé à modifier le code source en quelque sorte que vous voulez sauf que vous ne pouvez pas modifier les détails du droit d’auteur au sommet de chaque module.
  • Si vous voulez distribuer le code source avec votre application, vous êtes seulement autorisé à distribuer des versions publiées par l’auteur. Il s’agit de maintenir un seul endroit pour obtenir le code source.
Mises à jour
V1.0 (31 mai 1999)
  • Première version publique.
V1.01 (3 juin 1999)
  • Correction d’un problème avec le code à l’aide de la fonction CancelIo qui n’existe pas sous Windows 95. Cela a provoqué des modules mis au point avec CSerialPort de ne pas charger sur Windows 95.
Fixe les fuites qui peuvent survenir dans l’exemple d’application lorsqu’une exception est levée.
V1.02 (16 juin 1999)
  • Correction d’un bug par lequel CString::ReleaseBuffer n’était pas appelé à CSerialException::GetErrorMessage
V1.03 (29 septembre 1999)
  • Correction d’un bug simple de copier et coller dans CSerialPort::SetDTR
V1.04 (8 mars 2000)
  • Liens aux travaux de maintenant documentation <g>.
V1.05 (8 mai 2000)
  • Fixe une variable non référencée dans CSerialPort::GetOverlappedResult dans VC 6
V1.06 (12 juin 2000)
  • Fixe un autre problème de variable non référencé CSerialPortApp::InitInstance dans VC 6.
3 juillet 2000
  • Mise à jour mineure de la documentation.
V1.07 (10 décembre 2000)
  • Fait le destructeur de classe virtuelle.
V1.08 (15 janvier 2001)
  • Attach, méthode maintenant vous permet également de spécifier si le port série est attaché à en mode superposée
  • Supprimé certains ASSERT qui n’était pas nécessaires dans certaines fonctions
  • Mise à jour de la méthode Read qui utilise des e/s avec chevauchement pour également renvoyer que les octets lus. Cela autorise les appels à WriteFile avec une structure de 0′ isée se chevauchaient (c’est requise lorsqu’ils traitent avec TAPI et communication série)
  • Inclut désormais le message de copyright dans le code source et la documentation.
V1.09 (24 mars 2001)
  • Ajouté une méthode BytesWaiting
V1.10 (4 avril 2001)
  • Fourni une version substituée de la BytesWaiting, qui spécifie un délai d’attente.
V1.11 (23 avril 2001)
  • Correction d’une fuite de mémoire dans la méthode DataWaiting.
V1.12 (1er mai 2002)
  • Correction d’un problème dans la méthode Open qui ne parvenait pas à initialiser la structure DCB incorrectement, lorsque vous appelez GetState. Merci à Ben Newson pour ce correctif.
V1.13 (29 mai 2002)
  • Corrige un problème le GetProcAddress pour CancelIO utilisait la convention d’appel incorrecte.
V1.14 (7 août 2002)
  • Changé la déclaration de CSerialPort::WaitEvent à être cohérent avec le reste des méthodes en CSerialPort qui peut fonctionner en mode « OVERLAPPED ». Une note sur l’utilisation de ceci : si la méthode réussit alors la fin de l’opération est effectuée de façon synchrone et il n’y a pas besoin de faire un WaitForSingle/Multiple] objet. Si une autre erreur inattendue se produit alors une CSerialException est levée. Voir la mise en œuvre de la CSerialPort::DataWaiting qui a été réécrit pour utiliser ce modèle de conception nouvelle. Merci à Serhiy Pavlov pour repérer cette incohérence.
V1.15 (20 septembre 2002)
  • Ajout d’un ASSERT supplémentaire dans la fonction _OnCompletion interne.
  • Ajout d’un paramètre à la méthode Write qui fonctionne en mode avec chevauchement de sortie facultatif. Merci à Kevin Pinkerton pour cet ajout.
5 mars 2003
  • Mise à jour de la documentation de la fonction CSerialPort::GetStatus.
v1.16 (10 avril 2006)
  • Mis à jour les détails du droit d’auteur.
  • Ajout d’une macros CSERIALPORT_EXT_CLASS et CSERIALPORT_EXT_API qui facilite la classe à utiliser dans une dll d’extension.
  • Prélevé CObject à dérivation de CSerialPort car il n’était pas vraiment nécessaire.
  • Fixe un certain nombre d’avertissements de niveau 4 dans l’exemple d’application.
  • Retravaillé les méthodes e/s avec chevauchement pour exposer la structure LPOVERLAPPED au code client.
  • Mise à jour de la documentation pour utiliser le même style que le site web.
  • Un correcteur orthographique de la documentation HTML.
  • Mise à jour de la documentation sur le blocage possible en lecture / Ex fonction. Grâce à D Kerrison pour avoir signalé ce problème.
  • Correction d’un problème mineur dans l’exemple d’application lorsque le code est compilé avec/Wp64
v1.17 (2 juin 2006)

  • Supprimé le bOverlapped comme une variable de membre de la classe. Il n’y n’avait aucun besoin réel pour ce paramètre, car les fonctions du kit de développement logiciel vont effectuer leur propre contrôle d’opérations comment avec chevauchement devrait
  • Correction d’un bug dans GetOverlappedResult le code de vérification de mal contre l’erreur ERROR_IO_PENDING au lieu de ERROR_IO_INCOMPLETE. Merci à Sasho Darmonski pour avoir signalé ce bug.
  • Passé en revue toutes les instructions de traçage pour le correct.
v1.18 (5 juin 2006)
  • Correction d’un problème avec la création de l’objet d’événement interne. Il a été mal créé comme un objet événement de réinitialisation automatique au lieu d’un objet événement de réinitialisation manuelle. Merci à Sasho Darmonski pour avoir signalé ce problème.
v1.19 (24 juin 2006)
  • Corrigé quelques fautes de frappe dans la liste historique. Merci à Simon Wong pour avoir signalé cela.
  • La classe qui gère la construction des pointeurs de fonction lors de l’exécution du fait une variable membre de CSerialPort
  • Fait partie de AfxThrowSerialPortException de la classe CSerialPort. Merci à Simon Wong pour avoir signalé cela.
  • Enlevé le destructeur de CSerialException inutile. Merci à Simon Wong pour avoir signalé cela.
  • Correction d’une erreur mineure dans le texte de la TRACE dans CSerialPort::SetDefaultConfig. Encore une fois Merci à Simon Wong pour avoir signalé cela.
  • Code utilise maintenant nouveaux casts de style C++ plutôt que le vieux style C jette si nécessaire. Encore une fois Merci à Simon Wong pour avoir signalé cela.
  • CSerialException::GetErrorMessage utilise désormais les fonctions strsafe. Cela ne veut pas dire que le code exige maintenant le SDK de la plate-forme si compilé à l’aide de VC 6.
v1.20 (25 juin 2006)
  • Combine les fonctionnalités de la classe CSerialPortData dans la classe principale de CSerialPort.
  • Renommé AfxThrowSerialPortException ThrowSerialPortException et rendu la méthode public.
v1.21 (5 novembre 2006)
  • Mise à jour mineure à stdafx.h d’exemple d’application pour éviter les avertissements du compilateur en VC 2005.
  • Revenue de l’utilisation du fichier d’en-tête strsafe.h. Au lieu de cela, le code utilise désormais le VC 2005 Safe CRT et si ce n’est pas disponible, alors nous ne parvenons pas à la CRT standard.
  • Mise à jour mineure pour supprimer strsafe.h de stdafx.h de l’exemple d’application.
  • Mis à jour les détails du droit d’auteur.
v1.22 (25 janvier 2007)
  • Mise à jour mineure pour supprimer strsafe.h de stdafx.h de l’exemple d’application.
  • Mis à jour les détails du droit d’auteur.
v1.23 (24 décembre 2007)
  • CSerialException::GetErrorMessage utilise désormais le drapeau FORMAT_MESSAGE_IGNORE_INSERTS. Pour plus d’informations, consultez le blog de Chen à http://blogs.msdn.com/oldnewthing/archive/2007/11/28/6564257.aspx. Merci à Alexey Kuznetsov pour avoir signalé ce problème.
  • Simplifié le code dans CSerialException::GetErrorMessage un peu.
  • Optimisé le code du constructeur CSerialException.
  • Code utilise maintenant plus récents casts de style C++ au lieu des casts de style C.
  • Révisé et actualisé tous la TRACE de la journalisation dans le module
  • Remplacé tous les appels de ZeroMemory avec memset
v1.24 (30 décembre 2007)
  • Mise à jour de l’exemple d’application pour nettoyer la compilation sur VC 2008
  • CSerialException::GetErrorMessage utilise maintenant Checked::tcsncpy_s si compilé à l’aide de VC 2005 ou une version ultérieure.
v1.25 (18 mai 2008)
  • Mis à jour les détails du droit d’auteur.
  • Changé les valeurs réelles à parité enum afin qu’elles respectent la parité définissent des valeurs dans le fichier d’en-tête Windows SDK WinBase.h. Cela évite le problème potentiel vous utilisez les valeurs de parité enum CSerialPort un appel pour les appels API Win32 bruts. Merci à Robert Krueger pour avoir signalé ce problème.
v1.26 (21 juin 2008)
  • Maintenant, code compile proprement à l’aide de l’analyse du Code (/ analyze)
  • Mise à jour code se compile correctement à l’aide de _ATL_CSTRING_EXPLICIT_CONSTRUCTORS définir
  • Le code supporte maintenant seulement VC 2005 ou version ultérieure.
  • CSerialPort::Read, écriture, GetOverlappedResult & WaitEvent maintenant lève une exception que soit la dernière erreur ERROR_IO_PENDING ou pas
  • Remplacé tous les appels de ZeroMemory avec memset
v1.27 (4 juillet 2008)
  • Fourni une version de la méthode ouverte qui accepte une chaîne au lieu d’une valeur de numéro de port numérique. Cela permet au code à l’appui de certains paquets de port série virtuel qui n’utilisent pas les noms des périphériques sous la forme « COM %d ». Merci à David Balazic pour avoir suggéré cet ajout.
v1.28 (25 janvier 2013)
  • Mis à jour les détails du droit d’auteur.
  • Mis à jour l’exemple d’application et de la classe compiler proprement le VC 2010 et par la suite.
v1.29 (28 février 2015)
  • Mise à jour des paramètres de projet échantillon des valeurs par défaut plus modernes.
  • Mis à jour les détails du droit d’auteur.
  • Retravaillé les classes CSerialPort et CSerialPortException pour éventuellement compiler sans MFC. Par défaut les classes maintenant ne pas utilisent MFC par défaut mais si vous définissez CSERIALPORT_MFC_EXTENSTIONS les classes reviendra au comportement MFC.
  • Supprimer la logique pour utiliser GetProcAddress pour accéder aux fonctionnalités de CancelIO.
  • Mis à jour le code pour nettoyer la compilation sur VC 2013
  • Annotations SAL ajoutées à tout le code
  • Ajout d’une méthode GetDefaultConfig qui prend une chaîne
  • Ajout d’une méthode SetDefaultConfig qui prend une chaîne

Comments are closed.