Comment une page web de lecture de l'utilisateur du port série - dans l'année 2017?
Je ré-implémenter un système existant à partir de zéro.
À un moment donné, lorsque l'utilisateur accède à une page web, le serveur doit lire les données de l'utilisateur du port série.
Actuellement, la page web a un contrôle ActiveX; lorsque la page est chargée du contrôle ActiveX appels dans une DLL COM sur le PC de l'utilisateur qui lit les données à partir du port série.
Le système est de 10 ans. Est-il "mieux" que je puisse mettre en œuvre ce?
Par exemple, la technologie a avancer dans les dix dernières années. Et cette solution semble qu'à travailler en MS IE, qui a maintenant une part de marché d'environ 26% (il avait, en 2013, la dernière fois que j'ai mis à jour cette question. Février 2107, MS IE a 3-4% et le Bord est de 1-2%. Que Edge est également un MME produit, il pourrait prise en charge d'Active X - je n'ai pas essayé. Otoh, que, depuis qu'il est nouveau à partir du sol en place, il ya une bonne chance qu'il ne fait pas).
N'HTML 5 offre de toutes nouvelles possibilités? Ce sur des produits comme Cordova?
Existe-il d'autres possibilités?
Pourrais-je ajouter un Raspberry Pi pour faire de la lecture sur le port série & navigateur d'application de communiquer avec plus d'un service RESTful?
[Mise à jour] @ EuroMicelli dit "je vais supposer que vous avez une très bonne raison pour exécuter votre application à partir d'un navigateur web, au lieu d'une application native". Je ne sais pas car je n'étais pas là lorsque le projet d'origine était prévu (et la société qui l'a conçu est aujourd'hui disparu).
Peut-être qu'ils ne voulaient pas l'utilisateur final interfacer directement avec la base de données? Peut-être "basé sur un navigateur" est un nouveau mot à la mode à l'époque? Personnellement, je n'ai pas de problème avec une application de bureau (que je trouve plus facile à mettre en œuvre), mais nous devrions peut-être envisager d'autres basé sur un navigateur? (d'ailleurs, je peux gérer l'application bureau à moi-même; c'est seulement basé sur un navigateur de lecture à partir du port COM qui m'amène à proposer un bonus 😉
Quelles sont les plateformes de vous essayer à l'appui? Est Windows est suffisant, ou avez-vous besoin de Linux ou MacOS?
Q: Est-ce la page web affichée, l'arrivée d'un modem connecté au même port série? (quelqu'un qui se souvient de la façon dont il de travailler pour presque tout le monde)
Downvote, sans explication. Soupir!
OriginalL'auteur Mawg | 2013-03-02
Vous devez vous connecter pour publier un commentaire.
Juste au nom de l'autre (plus comme "web-de-choses") option: matériel externe.
Selon les cas d'utilisation vous pouvez utiliser un externe à faible coût de l'appareil comme un microcontrôleur arduino ou raspberry-pi pc embarqué.
Ce n'est pas très difficile de construire une simple série de web-service pont sur ces appareils. Vous pouvez utiliser certaines des projets de ce type par exemple : https://code.google.com/p/serwebproxy/
Dans un tel scénario, tout le bas niveau de stuff est gérée par le matériel externe et vous est offert par un service web comme interface (via get/post).
Autre avantage est que le pc, où vous application s'exécute sur l', n'a pas besoin d'un port série (ce qui devient assez rare sur certains systèmes).
À partir de votre navigateur application vous offre la possibilité d'interroger le service web sur le périphérique intégré avec un simple appel ajax. Le navigateur n'aurait pas besoin d'un plugin à tous, la solution fonctionne de la croix-plattform et est générique et indépendant de l'élaboration d'un navigateur technologies dans un futur proche.
Vous pouvez utiliser un raspberry pi. Vous pouvez ajouter un régulier RS232 pour le conseil, sans la nécessité d'un nouvel adaptateur USB-RS232. Voir cette référence: linhost.info/2016/02/test
Je voudrais utiliser un pi à zéro avec de l'montré adaptateur RS232. Manière la plus facile de combler le RS232 avec le RESTE serait à l'utilisation de python. Je n'ai pas de solution complète.
voulez-vous dire une solution qui fonctionne sur internet?
bon alors, c'est une "sécurité" du réseau. Non à l'internet public. Pouvez-vous spécifier ce qui doit être connecté au Port Série?
OriginalL'auteur Chris
Une chose est sûre, vous ne serez jamais en mesure de communiquer avec la machine locale matériel sans l'installation de certains fichiers binaires (et de l'exécuter avec les privilèges appropriés) sur la machine locale. Toutefois, cela ne signifie pas que vous avez besoin d'utiliser un composant ActiveX et rester coincé avec Internet Explorer. Bien sûr, vous pouvez également développer un composant pour tous les navigateurs du marché.
Je suggère une autre approche:
Ici est de savoir comment il devrait ressembler à:
Il est intéressant de prendre. Je me demande - à ce point - pourquoi sommes-nous à l'aide d'un navigateur? Il semble comme un je-avoir-un-marteau problème. Si nous sommes autorisés à installer un service sur le front-end de la machine, il semble que la bonne approche est d'aller all-in: utiliser un natif des applications Windows et couper les couches. Vous pouvez héberger le contrôle HTML si vous voulez maintenir une interface HTML. Pour le bon conseil, il vous aider si nous le savions plus de détails sur les circonstances de ce produit.
ainsi, le bénéfice d'une application web est toujours que vous avez à déployer un minimum ensemble de composants. Ce service peut être qu'un .exe. Mon idée était de le rendre très générique, peut-être jusqu'au point il pourrait être utilisé par n'importe quelle application web - penser, c'est une idée intéressante pour un projet codeplex... 🙂
La lecture de tous ces commentaires, les gens semblent oublier la légitimité de l'aide d'un navigateur web pour accéder port série matériel. Dans notre cas, je suis à la recherche d'un très simpliste de la lecture des données à partir d'un contrôle physique scanner (MICR) pour fournir des données à un magasin de commerce électronique pour la saisie de commande. Bien sûr, je pourrais créer une application windows forms, mais pourquoi aurais-je quand littéralement tout le reste est fait au sein de la boutique web de l'interface? C'est le début de la fragmentation et de la confusion pour les employés de faire le travail. KISS = Keep It Simple, Stupid...
OriginalL'auteur Simon Mourier
Pour minimiser bibliothèque externe ou plugin exigences sur les machines clientes, je voudrais écrire un Applet Java.
Résumé (y compris des liens vers la plupart des documents que vous devez faire pour y arriver):
Plus de détails:
Selon StatOwl, environ les deux tiers de toutes les machines d'avoir la liste des frameworks Java est déjà installé, de sorte que vous pourriez même pas besoin de demander à vos clients de fournir des infrastructures supplémentaires. Et si vous le faites, au moins vous demandez un (pour la plupart) bien entretenu morceau de logiciel que les gens savent et ne pas être trop sceptique. Et, la plupart des navigateurs devraient avoir la possibilité d'inviter les utilisateurs à installer le framework Java automatiquement si il est manquant.
Il y a plusieurs bibliothèques différentes que vous pouvez utiliser en Java pour accéder au port série. PureJavaComm semble être l'un des rares, cependant, qui ne nécessitent pas de code externe pour fonctionner. Plus précisément, sur Windows, leur WinAPI classe Java vous donne un accès direct aux ports COM, y compris tous leurs paramètres à l'aide des appels à la déjà installé des bibliothèques de Windows. Depuis PureJavaComm est un Java-seulement de la bibliothèque, vous pouvez le paquet avec votre applet dans une .jar fichier, le navigateur télécharge automatiquement, donc il n'y a rien à installer.
Vous pouvez ensuite écrire un minimum Applet Java (probablement autour de 50 à 100 lignes au total) qui définit les méthodes publiques de faire de l'accès au port série vous avez besoin, que vous pouvez facilement appeler à partir de JavaScript directement: Invoquant L'Applet Méthodes De Code JavaScript
La seule chose que vous devez vous assurer que vous signer votre applet et que vous enveloppez de votre port série de code dans doPrivileged(...) appels de sorte qu'il sera acquis un système d'accès à partir de l'intérieur de la JVM bac à sable. Pour cela, vous pouvez obtenir une prise de l'achat d'un certificat SSL (que vous pouvez déjà avoir si votre service utilise le protocole https) ou créer votre propre. Si vous générez votre propre, les utilisateurs sont invités, s'ils veulent faire confiance à votre applet, mais ils peuvent choisir "toujours faire confiance" et donc, c'est juste un case - et ok-cliquez sur. Mais au-delà, cela devrait être complètement transparent solution qui permettra de minimiser l'impact sur votre expérience d'utilisateur.
Variante 1:
Une autre option serait de simplement abandonner le site web de l'interface tout à fait et au lieu de fournir un programme Java qui permet aux utilisateurs de facilement exécuter (avec ou sans l'installer) directement à partir de votre site web en utilisant JNLP (Java Web Start).
La variante 2 (Probablement Windows uniquement):
Je suppose que vous pourriez aussi utiliser Microsoft Silverlight, qui semble également assez largement déployée:
La Communication série avec Silverlight 5 (port COM)
Certains pourraient considérer qu'il est plus "moderne" que les Applets Java, mais c'est probablement moins de la croix-plate-forme.
Il semble aussi un peu plus compliqué pour appeler votre Silverlight code de JavaScript, mais il est possible:
Prise de Silverlight Scripts en JavaScript
Autant que je sache, des Applets Java sont beaucoup plus largement soutenue que ActiveX, qui est principalement un Microsoft (Internet Explorer) invention (voir la question d'origine). Aussi, l'écriture et la signature de ces applets est en fait assez simple (j'ai fait un peu). Mais le gain est quand vous essayez de les appeler à partir de JavaScript. Avec une Applet Java, tout ce que vous devez faire est d'appeler méthodes publiques directement. Fait. C'est aussi simple, comme vous pouvez éventuellement faire. Alors que certains des autres solutions proposées ici, qui impliquent un HTTP externe service exigera " cross-site-scripting, qui peut être d'une grande douleur.
d'accord, l'interaction entre le java-applet et javascript est vraiment simple et beaucoup plus de la croix-plattform puis ActiveX. Juste de mon expérience quotidienne, l'acceptation des applets java n'est pas à la hausse. En raison de largement discuté des problèmes de sécurité, les gens ont tendance faire désactiver Java-Applets. Je pense que cela dépend, si vous désirez un plug-in intégré comme approche ou un plus pur web comme approche. Mais +1 pour l'aspect plus large de l'plattform prise en charge de java-applets en comparaison à d'ActiveX
Malheureusement, vous avez raison... Actuellement il y a un peu poussée à l'encontre de Java en raison de la récente problème de sécurité (voir la rubrique "(pour la plupart)"-lien ci-dessus). Mais honnêtement, je ne comprends pas vraiment. Il y a bien pire problèmes dans d'autres logiciels (comme Windows) et des correctifs pour Java sont libérés au moins aussi rapidement à l'aide des (semi-)automatique des mises à jour. Donc, je ne suis pas sûr que la haine est justifiée. Personnellement, je trouve cela très pratique, que je peux code de presque rien (sites web, applications mobiles, des applications de bureau, ...) dans une langue aujourd'hui. Ce serait une énorme déception si c'est allé loin en raison de hasard en politique.
Maintenant que les Applets Java sont n'est plus pris en charge dans les navigateurs comme google Chrome, est-il une solution?
OriginalL'auteur Markus A.
Probablement pas.
Je vais supposer que vous avez une très bonne raison pour exécuter votre application à partir d'un navigateur web, au lieu d'une application native. Je peux penser à un couple de scénarios où je peux voir que le fait d'être une bonne décision d'affaires.
Même aujourd'hui, avec toutes les avancées modernes, les navigateurs web sont toujours de fantaisie document interactif téléspectateurs, ne pas universelle environnements d'exécution. Même la plupart des fonctionnalités de pointe, comme les websockets ont été mis en place pour permettre sophistiqué de communication client-serveur, et pas à cause de quelque intérêt universel pour un jour être en mesure de tout faire à partir du navigateur.
Il peut être spécialisé en environnement, lorsque cela est possible nativement (ne Chrome OS?), mais ce ne sera pas une solution générale. Il n'est pas proposé ou existant standard, je suis au courant de l'ouverture des ports série par l'intermédiaire d'un navigateur balise ou de script. Cela signifie que vous aurez besoin d'assez bas niveau de la technologie plug-in comme ActiveX. ActiveX est une très bonne solution si vous êtes Ok avec IE seulement un soutien, surtout si c'est déjà écrit et il fonctionne.
La plupart des gens à la recherche pour l'accès au port série à partir d'un navigateur sont probablement fait l'acquisition de données à partir de certains matériels propriétaires ils précisent (build/vendre?) et de contrôle, tels que l'équipement de laboratoire, scanners de codes à barres, des instruments scientifiques, etc. Je pense qu'à ce stade, il est également tout à fait acceptable pour spécifier le navigateur requis. Des applications spécialisées couramment le faire.
Si vous voulez continuer à regarder plus large prise en charge du navigateur, essayez de regarder la solution proposée pour cette question: La communication avec le Port Série à l'aide d'Adobe Flash. Je n'ai pas d'expérience avec ce produit, mais si cela fonctionne, il devrait permettre à la plupart des navigateurs à faire ce que vous voulez faire avec une seule base de code, et c'est aussi bien que ce que vous pouvez espérer.
Ce que vous en fin de faire, il sera très certainement impliquer une certaine forme de tiers plug-in.
OriginalL'auteur Euro Micelli
Vous pouvez utiliser Web USB - mais la compatibilité du navigateur est (pour l'instant) très faible Chrome 61 semble être à ce sujet.
Le principal avantage de cette approche est que le périphérique usb est branché sur le navigateur de la machine. Apparemment, cela fonctionne pour Chrome pour Android 64 (pas testé).
L'API est à https://wicg.github.io/webusb/.
Pour un tutoriel voir https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web.
Intéressant de voir que le Web USB maintenant (prétend - pas testé) travailler avec Chrome pour Android voir le précédent caniuse lien. Ne sais pas si cela aurait besoin d'un OTG (on The Go) connexion.
OriginalL'auteur AndyS
À l'aide de la serialport package via Node JS comme un serveur est une option. Cela fonctionne sur Windows, et apparemment sur Linux et OSX. Voir https://github.com/node-serialport/node-serialport.
C'est une solution que j'ai utilisée pour lire les micro peu de comms via USB à un navigateur. Je n'ai recompiler le driver pour windows (10) avec:
Je l'ai collé quelques de mon code ci-dessous pour référence:
Cette approche fonctionne - pour moi -, mais il peut prendre beaucoup de temps pour le faire fonctionner. Ce n'est pas, à mon avis, ce qui est évident, ou une solution simple. Il nécessite une bonne quantité de savoir-faire technique, et est, je pense, beaucoup plus complexe et plus 'difficiles' qu'il devrait être.
En particulier - la reconstruction de la bibliothèque, ce n'est pas quelque chose que je m'attends à faire lors de l'utilisation de Node JS. Un des effets est que vous devez les recréer le port série binaires pour une autre plate-forme.
OriginalL'auteur AndyS