Sida 1 av 2
C# till Linux
Postat: 2 december 2008, 20:44:03
av thepirateboy
Jag har skrivit ett litet program som kommunicerar med comporten i C#. En del som använder programmet kör dock bara Linux.
Kan någon Linuxguru ge en fingervisning om var man ska börja om man vill göra ett litet program som kommunicerar med comporten i Linux. Eller ska man låta bli? Har aldrig jobbat med Linux men kan en del C-programmering.
Postat: 2 december 2008, 20:56:04
av speakman
Mono borde sköta det mesta åt dig.
Postat: 3 december 2008, 11:54:09
av SvenW
Det finns lite om portar i Linux här:
http://www.ibiblio.org/pub/Linux/docs/H ... -se.txt.gz
Om du vill gå på djupet och skriva en egen kerneldriver, så är det inte så förfärligt svårt.
Serieporten är dock icke den allra enklaste. Googla på 'Linux Device drivers'.
Men som
speakman säger, kolla först om det finns färdiga lösningar som fungerar.
Postat: 3 december 2008, 12:05:43
av Nerre
Ska man bara kommunicera med serieporten via vanligt serieprotokoll så är det ju inget problem. Men i Linux har alltså inte programmen direkt åtkomst till hårdvaran utan snackar bara med kerneln (som i sin tur snackar med hårdvaran).
Vill man komma åt hårdvaran direkt måste man som sagt var skriva en kernelmodul som ersätter serial-modulen.
Postat: 7 december 2008, 18:30:06
av thepirateboy
Tack för tipsen. Jag har inte helt förstått mono. Som jag förstår det motsvarar det .NET framework och kan köras på Linux. Så mitt C#-program skulle teoretiskt kunna köras på Linux OM användaren installerar Mono på sin Linux-PC? Måste jag även kompilera programmet på en Linux-PC?
Hursomhelst, steg 1 blir nog att dra igång nån PC med Linux här hemma så jag kan testa. En vanligt terminalprogram skulle kunna duga tills vidare, hittade nån
här.
Postat: 7 december 2008, 21:06:50
av speakman
Nej, mono är en Virtual Machine för .Net under Linux. Binärerna är, precis som hos Java, platformsoberoende. Bara att köra igång "mono filnamn.exe" så ska det fungera. Om du inte använt några specialbibliotek som bara finns för Windows än. MS slutade göra generiska bibliotek strax efter 1.0 eller nått. Så det där med plattformsoberoende går ju att diskutera... Men prova för all del!
Postat: 7 december 2008, 22:21:55
av sodjan
> Jag har skrivit ett litet program som kommunicerar med comporten i C#.
Någon speciell anledning att inte bygga det i något mer standardiserat ?
Sen är det en sak jag inte förstår...
> En del som använder programmet kör dock bara Linux.
Men då så bör det som du frågar om väl redan vara löst !?
Eller hur gör dom när dom "använder programmet" annars ?
Postat: 8 december 2008, 06:01:12
av thepirateboy
Den enkla anledningen är väl att jag inte kan skapa program för Windows än i just C#.
> En del som använder programmet kör dock bara Linux.
Fel av mig. Hårdvaran används under Linux. Men för att kunna använda hårdvaran fullt ut behöver programmet "portas" till Linux.
Postat: 8 december 2008, 07:18:34
av GFEF
thepirateboy
>Men för att kunna använda hårdvaran fullt ut
> behöver programmet "portas" till Linux.
Gå övrt till mera allmänt användbara programerings miljöer som:
GCC, the GNU Compiler Collection
http://gcc.gnu.org/
Det finns för det flest hårdvaror och operativsystem.
En "portnig" är i många fall endst omkompilering
av källkorden till annat målsystem.
Postat: 8 december 2008, 10:14:50
av micke.prag
Vill du skriva program som kan köras på många olika plattformar rekommenderar jag dig att ta en titt på Qt:
http://trolltech.com/
http://doc.trolltech.com/4.4/tutorials-tutorial.html
Postat: 8 december 2008, 10:27:44
av speakman
Kan du C# så skulle jag rekommendera Python om du vill skriva helt platformsoberoende. Det finns en hel del likheter, fast Python blir "enklare" då det är ett dynamiskt språk.
Postat: 8 december 2008, 12:34:28
av thepirateboy
Tackar för tipsen, precis vad jag behöver då jag inte är speciellt insatt i PC-programmering.
Postat: 8 december 2008, 13:44:09
av speakman
Du kan inte beskriva mer ingående vad ditt program gör? Kanske det finns än bättre idéer.
Postat: 8 december 2008, 14:18:04
av thepirateboy
Jovisst, det är en fyrkantsvåg-generator som kan styras via PC:n. På hårdvaran finns en FTDI USB-UART krets (virtuell comport). För att ställa om frekvensen på fyrkantsvågen skickar jag några bytes i ett speciellt format.
Det jag vill göra i mjukvaran är att välja comport, välja frekvens (gärna via nåt grafiskt gränssnitt) och skicka iväg detta via USB-UART kretsen. Hårdvaran svarar med "OK" om den mottagit kommandot.
Postat: 8 december 2008, 14:23:01
av micke.prag
Genom att använda d2xx istället för vcp kan du vinna två saker:
1) Användaren behöver inte välja com-port utan ditt program kan hitta din enhet själv, d.v.s. du vinner användarvänlighet
2) d2xx finns för både linux och windows så du får plattformsoberoendet på köpet för den biten.