C# till Linux

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

C# till Linux

Inlägg 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.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Mono borde sköta det mesta åt dig.
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg 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.
Nerre
Inlägg: 27205
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Inlägg 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.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg 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.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg 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!
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 ?
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg 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.
GFEF
Inlägg: 2382
Blev medlem: 4 december 2004, 18:44:04

Inlägg 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.
micke.prag
Inlägg: 79
Blev medlem: 22 juni 2006, 16:11:17
Ort: Lund
Kontakt:

Inlägg 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
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg 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.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Tackar för tipsen, precis vad jag behöver då jag inte är speciellt insatt i PC-programmering.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Du kan inte beskriva mer ingående vad ditt program gör? Kanske det finns än bättre idéer.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg 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.
micke.prag
Inlägg: 79
Blev medlem: 22 juni 2006, 16:11:17
Ort: Lund
Kontakt:

Inlägg 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.
Skriv svar