Umím AVR (C), jaký zvolit jazyk a prostředí pro PC aplikace?

Ahoj

V cecku si pro AVR uz neco naprogramuju.Ted bych ale chtel komunikovat s PC po seriovce a ktomu bych si chtel napsat program v C.Kdysi sem to delal v Delphi ktery sem znal ze skoly.Chci ale psat i pro PC ve stejnym jazyku jako pro MCU.Nevim ale jake konkretni prostredi zvolit tak prosim o vase zkusenosti a rady.A kdybyste vedeli o nejaky odskouseny knihovne pro RS232 i s manualem budu vdecny…

:arrow_right: administrator: přesunuto z "Ostatní"

:arrow_right: administrator: přejmenováno z "RS232:PC programing"

Microsoftí visual studio je velice slušné IDE a nejnižší verze je volně zdarma ke stažení. microsoft.com/express/downloads/
S přístupem k COMu v C na win ti však neporadím, osobně lepím v C#, tam je to primitivní.

ja jsem to delal v c++ builderu, da se stahnout jednoducha knihovna s funkcema primo na komunikaci s COM portama, akorat myslim musis mit budto trial verzi nebo s licenci

Čau, tady ti přikladam knihovnu kterou používam já, kdysi jsem ji vyhrabal nikde na netu. Má dvě trochu nepříjemný vlastnosti: neumí otevřít COM port větší než 9 a používá windows.h (neni multiplatformní). Používam jí v prostředí code::block spolu s wxwidget
Serial.zip (1.77 KB)

V Borland Builderu i v Microsoft Visual Studiu již knihovna pro COM port je.

No tak na dev-c++ sem teda zanevrel,protoze sem tam nemohl najit ani formular kam bych dal nejaky tlacitko a ani tlacitko kery bych tam dal sem nenasel :smiley: U visual studio se mi to podarilo behem chvile.Zasek sem se ale kdyz sem dal New project,Windows Forms aplication,dal sem na formular Button a dvakrat poklepal aby se mi zobrazila funkce ktera se vykona po kliknuti tlacitka… nevim ale kde nadefinuji nejakou promenou !!! koukal sem na youtube.com na navod ale tam ten kod kterej se vygeneruje pro udalost tlacitka vypada jaksi jinak… posilam fotku a odkaz na youtube… youtube.com/watch?v=KdZAvW7WYJU

Aha tak na tom youtubu by to udajne melo byt C# ,stejne ale nevim kam tam nadefinovat promenou… :frowning:

To Pitty:Mozna pro me bude lepsi to C# asi jak tv tom delas ty.Ono je to asi spis obektove orientovany nez C++.Jaky k tomu pouzivas IDE?JUa v tom visual nikde nevitim pri vivareni projektu C#…

Stahujum visual studio C# a povalim to.Bude to podobny tomu mimu object pascalu v delphi a pritom syntaxy spis C.Ted by se mi nemeli plist dve syntaxe kdyz budu programovat ser linku mezi MCU a PC… oto mi slo

Nemuzu ale jaksi najit v tom visual studio c# komponentu ScrollBar :frowning: nebo neco obdobnyho…

Pokud jsi začal jiným jazykem (třeba C++), tak myslím C# najděš v “Other languages”. Samozřejmě jen jesli máš stažený celý VS express (offline install) a ne jen jeden jazyk.

Komponenta ScrollBar jako taková tu není (tedy alespoň jsem na ni nenarazil a nepotřeboval ji), scrollbary se aktivují u komponenty, která ho potřebuje, automaticky. Někdy ještě bývá možnost upřesnění v properties daného objektu.

Mám tu na fóru několik výtvorů psaných v C#, dám ti sem nějaký odkaz. Není to většinou moc oop, protože to bejvá dělaný jen pro jeden účel narychlo, ale snad z toho něco vykoumáš.

download.php?id=145
download.php?id=961
download.php?id=493
download.php?id=892
download.php?id=931

Nco bylo možná psaný ještě ve VS2005, ale to by neměl být problém. Většinou (doufám) to je pro .NET 2.0. Poslední dobou ale na to nastavování projektu zapomínám, takže možná bude něco pro .NET 3.5

A ještě jeden na cvičení nožkama COMu.
CS_W32_serial_ctrl.zip (70.9 KB)

Stahl sem si primo Visual Studio C# 2008.To mi staci :slight_smile: Ja potrebuju prave samotnej scrollbar a treba label na zobrazovani jeho hodnoty a posilat to seriovkou,vic nic.Kdysi sem takhle v delpi scrollbarem hejbal s PWM registrem a reguloval tim cokoli… Nastavil sem si rozsah ScrollBaru od 0…255 a jelo to.ted teda nevim…

sla by ta komponenta nekde stahnout a doinstalovat?Neo pripadne udelat po svim??to by ale bylo asi slozity do zacatku,tvorba vlastnich komponent asi nebude uplne pro muj level… :frowning:

Takovýto scrollbar :slight_smile: Ten tu je, jmenuje se VScrollBar a HScrollBar.

A jaky si myslel ? :slight_smile: No ja ale nic nemuzu najit,myslel sem ze to bude v common controls ale tam nic nevidim,ani nikde jinde.V delphi stacil jeden a horizontal bo vertikal se u nej nastavilo v properties… :slight_smile: Ach jo to sou problemy…

Myslel jsem scrollbar třeba na formuláří nebo v textboxu, ty právě mají vlastní.
V toolboxu si rozbal “All Windows Forms”, tam je najdeš. Jen mi není jasný, proč má prevít maximum o 9 menší, než mu nastavím… :frowning:
No nic, přikládám klikátko se scrollbarem :wink:.
Nevím, jesli to bylo i v Delphi, ale mohly by se ti tu líbit “snipets” - zkus napsat třeba “for” a 2x TAB.
CS_W32_tahlo.zip (36.7 KB)

Jo tak sem ho nasel parada dikes.Ale snipes sem teda nenasel,nebo nevim co tim myslis,ani nnevim kam mam napsat for,nechapu tedkom… a kdyz dam open projekt a vyberu nejakej tvuj projekt kerej sem si odsud stahnul tak se mi nezobrazi kod ani formular.jen kdyz dam debug tak se to spusti a vidim jen ve vysledku co si naprogramoval…

view->solution explorer-> pravy na form1.cs-> view code, view designer
to ti zobrazi designer (= formulář) a (nečekaně:)) zdroják.
C# je objektovej jazyk, jehož základem jsou třídy (class). Ve třídách si můžeš vytvářet metody a do nich psát kód.
Právě když bys psal ručně, tak musíš napsat celej cyklus for(xx;xx;xx){}. Kdežto když napíšeš jen “for” a dáš 2x TAB, tak ti to tam celej cyklus hodí samo a ty si ho jen vyplníš. Taková fičurka :slight_smile: To jsou ty snipets - předpřipravený kusy kódu.
Kdyby ses chtěl podívat na jejich seznam, tak v místě, kde lze psát výkonný kód (v nějaký metodě) můžeš dát pravý->insert snippet a uvidíš je tam.
další užitečná je “mb” + 2xTAB = messageBox.

Zdarec, jak se daří? už jsi něco poslal? :slight_smile:

Kdyby sis chtěl pro začátek svůj výtvor vyzkoušet jen na PC, tak na to se dobře hodí emůlátor propojených seriových portů (null modem) com0com (sourceforge.net/projects/com0com/). Na jeden port si připojíš svůj prográmek, na druhý nějaký terminál a už můžeš zkoušet.
Jen bacha - ten program vymejšlí portům všelijaký jména. Abys mohl port používat v C#, musí se jmenovat “COM” + číslo, takže kdyžtak v programu přejmenovat.

Cao,bohuzel sem nemel dneska cas,a bude to horsi tak bna tejden :frowning:
No asi bych ztoho neco vykuchal,ale par vecem tam nerozumim tak kdyby si mi osvetlil par veci at aspon vim co kucham :slight_smile: Pridal sem tam komentare tak je prepis akorat vysvetlivkou.Diky ti velice Piityy uz ted…

[code]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace CS_W32_serial_ctrl
{
public partial class Form1 : Form
{
SerialPort serialPort; //Tady mi neni jasny co se deje,
public Form1()
{
InitializeComponent();
comboBox1.Tag = SerialPort.GetPortNames();
if (((string])(comboBox1.Tag)).Length != 0)//Nechapu: (string])(comboBox1.Tag)
{
for (int i = 0; i < ((string])(comboBox1.Tag)).Length; i++)
{
comboBox1.Items.Add(((string])(comboBox1.Tag))*);

            }
            comboBox1.SelectedIndex = 0;
        }
        else
        {
            MessageBox.Show("V počítači není žádný PORT !!!");
        }
        serialPort = new SerialPort();
        serialPort.PinChanged += new SerialPinChangedEventHandler(serialPort_PinChanged);
        serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
    }

    void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)//Tohle je funkce na prijem dat??
    {
        serialPort.DiscardInBuffer();//Tady ho jen vyprazdnujes a nevypisujes nekam??
    }

    void serialPort_PinChanged(object sender, SerialPinChangedEventArgs e) 
    {
        checkBox_Cd.Checked = serialPort.CDHolding;
        checkBox_Cts.Checked = serialPort.CtsHolding;
        checkBox_Dsr.Checked = serialPort.DsrHolding;
    }

    private void butt_open_Click(object sender, EventArgs e)
    {
        try
        {
            if (serialPort.IsOpen != true)
            {
                serialPort.PortName = ((string])(comboBox1.Tag))[comboBox1.SelectedIndex];//nechapu ten zapis
                //Podle čísla zvolené položky v comboboxu se přiřadí jméno dané položky na indexu v poli na proměnnou PortName.
                //Pole se jmény jse ve vlastnosti Tag daného comboboxu.
                serialPort.Open();
                label_stav.Text = "Port " + serialPort.PortName + " otevren.";
                butt_open.Text = "Close";
            }
            else
            {
                serialPort.Close();
                label_stav.Text = "Odpojeno";
                butt_open.Text = "Open";
            }
        }
        catch (Exception ex)//Nevim co je catch (Exception ex)
        {

            MessageBox.Show(ex.Message);
        }
    }

    private void checkBox_Dtr_CheckedChanged(object sender, EventArgs e)
    {
        if (serialPort.IsOpen)
        {
            serialPort.DtrEnable = ((CheckBox)sender).Checked;//Tenhle napis nechapu (CheckBox)sender),a nevim co je .DtrEnable
        }
    }

    private void checkBox_Rts_CheckedChanged(object sender, EventArgs e)
    {
        if (serialPort.IsOpen)
        {
            serialPort.RtsEnable = ((CheckBox)sender).Checked;
        }
    }[/code]*