webForumDet fria alternativet

Program för att skicka RS232

86 svar · 5 287 visningar · startad av Gildebrand

GildebrandMedlem sedan juni 2009920 inlägg
#1

Hej!

Jag är helt novis när det gäller programmering av datorprogram. Har hållit på lite grann med SQL, ASP och PHP.

Jag undrar om det skulle vara avancerat att göra ett program för att skicka ut RS232 kommandon över COM-Porten.

Lite bakgrund då. Jag har fått en förfrågan på att göra en av-installation. Allt, Projektor, duk, gardiner och uppspelningsenheter ska styras från en enda panel, och tänkte att en dator med en touch-panel skulle kunna göra jobbet.

Jag tänkte att själva gränssnittet, det som användaren ser, kan vara webbaserad, och körs i webbläsaren på datorn. Webbgränsnittet anropar ett program på datorn och säger till exempel "Duk Ner". Då står det i programmet att när den får kommandot "Duk Ner" så ska den skicka kodrad X över Comporten.

Det kanske finns några färdiga APIer som jag kan använda mig av?

Har ni några idéer? Är det genomförbart?

LaspMedlem sedan juli 200012 980 inlägg
#2

Terminalhanteraren ordnar detta.

RS232 är ett gränssnitt inga kommandon.

GildebrandMedlem sedan juni 2009920 inlägg
#3

Men man kan ju skicka kommandon över RS232!???
Jag är ute efter att göra ett gränssnitt där det står till exempel "Projektor På", och då skickar datorn ut kommandot till projektorn över RS232, och projektorn slås på.

headbugMedlem sedan sep. 2006867 inlägg
#4

Det går inte via ASP/PHP (såvitt jag känner till - och går det så är det en rätt fet säkerhets-issue) men det är jätte-enkelt att bygga en applikation som gör det åt dig, men det kanske är ett lite för stort steg att lära sig något programmeringsspråk? Om inte: ska det ske på en win-burk kan jag verkligen rekommendera .NET och C# med WinForms, det är lätt att bara börja bygga :)

GildebrandMedlem sedan juni 2009920 inlägg
#5

Vart ska jag börja? :)

GildebrandMedlem sedan juni 2009920 inlägg
#6

Googlade lite och hittade denna sida! http://dzcomm.sourceforge.net/

Skulle det gå att använda sig utav det i grunden på något sett och sedan bygga en programvara ovanpå det?

GildebrandMedlem sedan juni 2009920 inlägg
#7

Okej, så jag har just nu ingen aning om vart jag ska börja. Vilket program jag ska programmera i, eller vad jag behöver lära mig för att göre den här applikationen.

Är det avancerat att skicka RS232 i .NET?

LaspMedlem sedan juli 200012 980 inlägg
#8

Svaret är Nej. Jag tror att du får läsa på lite när det gäller kommunikation.
RS232 är väl mera ett gränssnitt och kommunikation. I vanliga fall säger vi Com1 eller Com2. Dvs. serieportar där man skickar enskilda tecken som en bitström i en i förväg bestäm hastighet exempelvis 9600 baud. Till det kommer stopbit och paritet.
Det du skall göra är att skicka en textkombination till en serieport. Och det är enkelt.

headbugMedlem sedan sep. 2006867 inlägg
#9

Det är ju kanske inte snutet ur näven att bli en kompetent programmerare i C#, men ladda hem gratisversionen av C# (http://www.microsoft.com/express/vcsharp/) och sedan kör du igång ett nytt WinForms-project.

Men det krävs ändå lite programmering, så det är en liten uppförsbacke här. Jag ska kolla lite, men sök på "serial c#" på google så letar vi lite

GildebrandMedlem sedan juni 2009920 inlägg
#10

Se där, hittade lite intressant nu om hur man kommunicerar genom com-porten :)

GildebrandMedlem sedan juni 2009920 inlägg
#11

Så denna enkla kod ska alltså skicka ut "Hello World" på COM1? Verkar ju inte så avancerat, än iallafall ;)

using System.IO.Ports;

private static void SendSampleData()
{
  SerialPort port = new SerialPort(
    "COM1", 9600, Parity.None, 8, StopBits.One);
  
  port.Open();
  
  port.Write("Hello World");
  
  port.Write(new byte[] {0x0A, 0xE2, 0xFF}, 0, 3);

  port.Close();
}
headbugMedlem sedan sep. 2006867 inlägg
#12

Se där ja! Alldeles perfekt C#-kod!

Så enkelt ska det vara, i teorin. Sen är det ofta så att din dator och hårdvaran du interfacar med finns i lite olika kinkiga varianter så det kommer sannolikt bli så att du får trimma den här koden på ett eller annat sätt.

Några portar flushar sin buffert, andra inte, några hårdvaror vill ha speciella tecken för att öppna ordentligt, etc.

Men det finns ganska mycket om det på nätet och framförallt kan du säkert söka på den hårdvarumodell du tänkte jobba med.

Lycka till och återkom gärna med frågor eller en snygg lösning (y) :stud

GildebrandMedlem sedan juni 2009920 inlägg
#13

Fler frågor lär det nig bli :D Har bara lyckats sätta mig in i hur det går till att skicka ut signaler på com-porten än så länge. Måste fortfarande göra ett användargränssnitt. Hur går det till när man gör användargränssnitt?

Har inte lyckats få igång Visual C# än så länge :@. Den tjatar om att det blir något fel vid installationen, men ska prova på en lite vettigare burk imorrn.

GildebrandMedlem sedan juni 2009920 inlägg
#14

Vart kan jag läsa om hur man kopplar en funktion i koden till en knapp? TEX hur jag kör kodraden som står i inlägget tidigare när jag trycker på en knapp.

headbugMedlem sedan sep. 2006867 inlägg
#15

Här verkar vara en ganska reko introduktion:

http://www.techotopia.com/index.php/Creating_a_Simple_C_Sharp_GUI_Application_with_Visual_Studio

Har du lyckats installera Visual Studio nu?
I såfall så hjälper VS dig med detta - dra in en knapp på ditt formulär. Sedan räcker det med att dubbelklicka på din nya knapp så skapas automatiskt klick-eventet, eftersom det är det vanligaste man vill göra med en knapp. Alla (de flesta, okej) kontroller har ett default event kopplat till sig som skapas och kopplas när du dubbelklickar på kontrollen.

GildebrandMedlem sedan juni 2009920 inlägg
#16

Jorå, gick bra när jag stängde ner lite andra program, så nu har jag fått det att funka.

Provade lite enkelt bara att göra en stängknapp och det funka bra.
Men jag skulle vilja att varje knapp anropar ett antal funktioner istället för att jag lägger in koden för kommunikation med COM-porten vid varje knapp.

Så att istället för att jag lägger in den kodsnutten för att tex köra ner duken direkt under knappen, så vill under koden för knappen, bara kunna skriva DUK-NER, och sen står det i koden någonstans koden för kommandot DUK-NER.

Skulle kännas bättre att skriva koden så att det blir så, blir så många upprepningar av samma kod annars.

Förresten, nån som har en idé om hur jag kan koppla upp en dator så att jag kan prova att skicka text över COM-porten och sedan ta emot den igen och läsa?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#17

Nånting jag funderar över... Vad sitter på andra sidan av serieporten?

GildebrandMedlem sedan juni 2009920 inlägg
#18

RS232 styrda relän som är kopplade till duken och gardinerna.

headbugMedlem sedan sep. 2006867 inlägg
#19

Gildebrand skrev:

Så att istället för att jag lägger in den kodsnutten för att tex köra ner duken direkt under knappen, så vill under koden för knappen, bara kunna skriva DUK-NER, och sen står det i koden någonstans koden för kommandot DUK-NER.

Skulle kännas bättre att skriva koden så att det blir så, blir så många upprepningar av samma kod annars.

Det är naturligtvis så man gör! Helt rätt tänkt. Du skapar en metod som du låter göra det du vill. Du kan dessutom låta metoden returnera något statusmeddelande om du vill, eller så skippar du det.

I din CLASS skapar du en ny metod, och för skojs skull en enum :)

public enum Dukstatus
{
    hidden,
    visible
}

Dukstatus _dukstatus = Dukstatus.hidden;
private void DukNed()
{
    InitPort();
    Send("data för att skicka ner duken");
    _dukstatus = Dukstatus.visible;
    BlahBlahBlah();
}

}

Fantasin sätter gränserna :)

headbugMedlem sedan sep. 2006867 inlägg
#20

Glömde ju lägga in det i click-eventet sen :)

private void button1_Click(object sender, EventArgs e)
{
     DukNed();
}

Har du skapat eventet genom att dubbelklicka på knappen så är den redan kopplad, annars får du lägga till den manuellt.

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)