Keskustelut - Web-ohjelmointi - Websivulta kirjoitus com porttiin?


LiDE 18:57 2.7.11 
Oletetaan näin, että mulla on ohjelmisto joka pyörii palvelimella ja sitä ohjelmaa käyttää selaimella useampi päätelaite jossa on kiinni lisälaite(asiakasnäyttö) johon kommunikointi tapahtuu joko virtuaalisen tai fyysyisen com portin kautta. Onko siihen mahdollista kirjoittaa eisim javascriptillä, phplla tai jollain muulla tavalla? Itsellä tällä hetkellä ohjelma on täysin php + javascript painotteinen ja yhden lisäpalikan käyttöönoton vuoksi en haluaisi vaihtaa koodikieltä ja samalla pitäisin ohjelman täysin selainpohjaisena. Kuulostaa varmasti hullulta, mutta googlesta löytyy niin laaja skaala kaikkea joten ajattelin kysyä täältä apua tähän ongelmaan. Kokemuksia ja vinkkejä otetaan vastaan. Kiitos.
editoitu: 04:58 3.7.11
neau33 22:05 2.7.11 
Kokemusta moisesta viritelmästä ei kosolti ole, mutta jos päätelaitteissa on käytössä Windows ja IE
niin Microsoft Comm Control (mscomm32.ocx) toimii. (vaatii mscomm32.ocx asennuksen/lisenssoinin)

Yksinkertainen javascript viritelmä voisi näyttää vaikkapa seuraavanlaiselta...

HTML
<html><head>
<object id="MsComm" classid="CLSID:648A5600-2C6E-101B-82B6-000000000014"
style="display: none">

   <param name="_ExtentX" value="1005" />
   <param name="_ExtentY" value="1005" />
   <param name="_Version" value="393216" />
   <param name="CommPort" value="3" />
   <param name="Handshaking" value="1" />
   <param name="BaudRate" value="115200" />
   <param name="RThreshold" value="1" />
</object>
<script language="javascript">
function OpenPort()
{
   if(!MsComm.PortOpen)
   {
      MsComm.PortOpen = true;     
   }
   //alert(MsComm.PortOpen);
}

function ClosePort()
{
   if(MsComm.PortOpen)
   {
      MsComm.PortOpen = false;     
   }
}

function SendToPort()
{
   if(MsComm.PortOpen)
   {
      var message = document.getElementById('txtsend').value;
      document.getElementById('txtsend').value = "";
      if(message != "")
      {
         MsComm.Output = message + "\r";
      }
   }
}

function ReadFromPort()
{
   if(MsComm.PortOpen)
   {
      document.getElementById('txtreceive').value = MsComm.Input;
   }
}
</script>
</head><body onload="OpenPort()" onunload="ClosePort()">
   <input type="text" id="txtsend" />
   <input type="button" value="Send" onclick="SendToPort()"/>
   <p><input type="text" id="txtreceive"/>
   <input type="button" value="Receive" onclick="ReadFromPort()"/></p>
</body></html>

Tutkimalla todella tarkasti tätä sivustoa löytää mahdollisesti ilmeneviin mscomm32.ocx ongelmiin vastauksia

Saatavilla on myös ns. kolmannen osapuolen ActiveX kontrolleita. Esim. tämä voisi toimia (paketti sisältää mm. sekä javascript että php samplen)

LiDE 10:28 3.7.11 
Kiitos neau33, tuo jälkimmäinen linkki minkä laitoit niin siihen löytyi myös tämmöinen vinkki, vaan ei ihan uusimpaan firefoxiin uppoa. Tosiaan kun olisi hyvä saada homma toimiman myös muilla käyttiksillä, eikä vain windowsilla :) Lisää ehdotuksia otetaan vastaan ja kokemuksia vielä mieluummin.
neau33 12:18 3.7.11 
kokeile uppoaisiko tämä uusimpaan firefoxiin
Meitsi 12:42 3.7.11 
neau33 kirjoitti:
kokeile uppoaisiko tämä uusimpaan firefoxiin


ActiveX ei toimi muissa käyttiksissä kuin windowsissa..
editoitu: 14:14 3.7.11
neau33 13:52 3.7.11 
neau33 kirjoitti:...mutta jos päätelaitteissa on käytössä Windows ja IE...
editoitu: 14:15 3.7.11
neau33 13:57 3.7.11 
LiDE kirjoitti:...vaan ei ihan uusimpaan firefoxiin uppoa.
editoitu: 14:14 3.7.11
neau33 14:09 3.7.11 
Meitsi kirjoitti: ...ActiveX ei toimi muissa käyttiksissä kuin windowsissa..
LiDE 17:24 3.7.11 
Ahaa okei, eli taas pitää ettiä uutta ratkaisua. Ei taida ihan helppo ollakaan tää homma, joku tälläinen löytyi, en sit tiiä kuinka tuo toimii. Täytyy saada se asiakasnäyttö ensin tänne ni pääsee testaan. Mutta lisää vinkkejä ja kokemuksia vaa jos löytyy!
editoitu: 18:41 3.7.11
Grez 18:39 3.7.11 
Itse lähtisin luultavasti siitä, että kirjoittaisin itse plugarin selaimeen jolla tuota on tarkoitus käyttää. Ei tarvitsisi sitten vähän väliä arpoa mitä tehdään kun tulee uusia versioita selaimesta ja käytetyn plugarin tekijä on lopettanut tuen.

Tai mites jos käyttäisi Javaa? En tosin tiedä voiko Java Communications APIa käyttää web-selaimesta, mutta onhan siinä vaihtoehto kaksi tehdä sampopankit ja käyttää JNI:tä.
neau33 19:51 3.7.11 
What do you think about this stuff?
LiDE 09:45 8.7.11 
Noniin nyt hiukan koneen kanssa tappelun jälkeen (win7 64bit) sain kuin sainkin toimimaan tuon asiakasnäytön. Tosin tuo websivulta siihen kirjoitus ei kyllä ainakaan tuntunut noilla työkaluilla ihan vielä onnistuvan.

Grez kirjoitti:
Itse lähtisin luultavasti siitä, että kirjoittaisin itse plugarin selaimeen jolla tuota on tarkoitus käyttää. Ei tarvitsisi sitten vähän väliä arpoa mitä tehdään kun tulee uusia versioita selaimesta ja käytetyn plugarin tekijä on lopettanut tuen.

Tai mites jos käyttäisi Javaa? En tosin tiedä voiko Java Communications APIa käyttää web-selaimesta, mutta onhan siinä vaihtoehto kaksi tehdä sampopankit ja käyttää JNI:tä.

Onko sinulla kokemusta selain pluggarin teosta?
LiDE 23:01 26.7.11 
Dodiin, nyt on saatu tauon jälkeen taas leikittyä asiakasnäytön kanssa ja tällä hetkellä näyttää ihan hyvältä eli asensin http://www.walking-productions.com/jsserial/new/JSSerial.html kyseisen pätkän tuolta sivustolta ja tämän avulla sitten lähti ainakin jotenkin päin pelittämään tuo homma. Selain osaa kirjoittaa JOTAIN näyttöön, tosin merkistöstä ei saa yhtään mitään selvää joten luultavasti joku homma on vielä pielessä tällä hetkellä. Tilannepäivitys lähinnä tähän ketjuun :)

Toki jos jotain java koodaria kiinnostaa autella enemmänkin niin voi ottaa yhteyttä suoraankin ja ehkä jotain korvaustakin voitaisiin sopia asiaan liittyen, koska luultavasti astun kohta vesille missä itse en ole enää vahvimmillani :)