Interfacciamento tra software c e software c#

di il
13 risposte

Interfacciamento tra software c e software c#

Sto utilizzando una stampante Dymo 550, probabilmente mi servirà un interfacciamento tra software c e software c#, cosa mi consigliate? grazie

13 Risposte

  • Re: Interfacciamento tra software c e software c#

    06/02/2023 - vale88 ha scritto:


    Sto utilizzando una stampante Dymo 550, probabilmente mi servirà un interfacciamento tra software c e software c#, cosa mi consigliate? grazie

    Il primo consiglio è quello di non duplicare le discussioni, visto che hai aperto una problematica analoga anche qui, tra l'altro senza specificare nessun dettaglio riguardo il problema.

    Pur comprendendo il sentimento di chi deve risolvere un problema e la necessità di chiedere aiuto, “buttare in questo modo la palla” sul forum citando un modello di stampante e limitarsi a dire “devo lavorarci”, peraltro in duplice copia, non è senz'altro un modo consono di affrontare la questione.

  • Re: Interfacciamento tra software c e software c#

    Ho cancellato l'altra discussione

  • Re: Interfacciamento tra software c e software c#

    Dire

    mi servirà un interfacciamento tra software c e software c#

    non vuol dire niente! 

    Codice C deve chiamare codice C#?

    Codice C# deve chiamare codice C? 

    Ti serve una comunicazione bidirezionale? 

    Ci sono n-mila soluzioni, ogn'una adatta ad un particolare caso, con pro e contro, più o meno complesse…

    Comunque anche no:

    https://developers.dymo.com/

  • Re: Interfacciamento tra software c e software c#

    Come accennato, dipende da cosa intendi. Devi essere più specifica.

    Hai una DLL da utilizzare?

    Del codice sorgente C?

  • Re: Interfacciamento tra software c e software c#

    Ho letto la guida riguardo i driver che bisogna utilizzare per l'utilizzo della stampante..ancora devo iniziare a fare delle prove, nel frattempo scaricherò il driver

  • Re: Interfacciamento tra software c e software c#

    Quindi la tua domanda che senso aveva?

  • Re: Interfacciamento tra software c e software c#

    Ho trovato il codice in c# che fa al mio caso..ora però non riesco a trovare le librerie adatte, ho trovato sdk in java e visual basic, ma non in c#

     private void Print()
            {
                var myDymoAddin = new DymoAddIn();
                var myLabel = new DymoLabels();
                if (myDymoAddin.Open(@"c:\temp\inventory.label"))
                {
                    myLabel.SetField("part_num", txtPartNumber.Text);
                    myLabel.SetField("serial_num", txtSerialNum.Text);
                    myDymoAddin.StartPrintJob();
                    myDymoAddin.Print(1, false);
                    myDymoAddin.EndPrintJob();
                }
                
            }
  • Re: Interfacciamento tra software c e software c#

    Devi usare il funzionamento per Visual Basic anche con C#. 

    Il manuale dice che ci sono 2 modi per usare la stampante : mediante COM (Component Object Model) che va bene per VB e C#, oppure mediante la DLL, piu' complicato, ma ‘se po’ fa'. 

    Purtroppo entrambe richiedono una programmazione un po' piu' ‘arzigogolata’ (in pratica: e' complicato) .

    Al momento aiutarti e' impossibile se non avendo una stampante sottomano e sperimentando direttamente.

    https://dokumen.tips/download/link/dymo-label-software-sdk-manual.html

    (non e' il manuale originario ma mi aspetto non sia cambiato piu' di tanto) 

  • Re: Interfacciamento tra software c e software c#

    COM Component non Common

  • Re: Interfacciamento tra software c e software c#

    Opps: l'ora  e l'eta' si fanno sentire ;-)

  • Re: Interfacciamento tra software c e software c#

    08/02/2023 - migliorabile ha scritto:


    Devi usare il funzionamento per Visual Basic anche con C#. 

    Il manuale dice che ci sono 2 modi per usare la stampante : mediante COM (Component Object Model) che va bene per VB e C#, oppure mediante la DLL, piu' complicato, ma ‘se po’ fa'. 

    Purtroppo entrambe richiedono una programmazione un po' piu' ‘arzigogolata’ (in pratica: e' complicato) .

    Al momento aiutarti e' impossibile se non avendo una stampante sottomano e sperimentando direttamente.

    https://dokumen.tips/download/link/dymo-label-software-sdk-manual.html

    (non e' il manuale originario ma mi aspetto non sia cambiato piu' di t

    Ho trovato un'applicazione in c# che potrebbe risolvere il mio problema, e ho anche scaricato Dymo.sdk.. il problema è che ora ho un errore:


    Error CS0012 The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. WPFSDKSample C:\Users\VDS\Desktop\cartella\DCD-SDK-Sample-master\WPF\WPFSDKSample\ViewModels\MainViewModel.cs 22 Active

  • Re: Interfacciamento tra software c e software c#

    08/02/2023 - vale88 ha scritto:


    il problema è che ora ho un errore

    Non fosse che il messaggio di errore ti suggerisce già la soluzione da adottare….. :)

  • Re: Interfacciamento tra software c e software c#

    Sì infatti con l'utilizzo della libreria giusta sono riuscita a togliere parecchi errori, avrei però bisogno di un vostro parere, visto che non sono un'esperta di c# e nemmeno di stampanti dymo 550…

    Questo codice l'ho trovato in internet, è un'app per l'utilizzo della stampante dymo, quello però che mi sfugge è che le variabili SelectedPrinter e SelectedLabelObject non siano valorrizzate e quindi mi danno errore..secondo il vostro parere è un errore del codice, cioè il programmatore che ha scritto questo codice non ha valorizzato le variabili o può essere che io non abbia qualche libreria specifica? grazie

    Comunque ho provato a inizializzare le variabili e ho tolto parecchi errori ma non so se è la strada giusta, questo è il codice originario

    using DymoSDK.Implementations;
    using Microsoft.Win32;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    
    namespace WPFSDKSample.ViewModels
    {
        public class MainViewModel : BaseViewModel
        {
      
            DymoSDK.Interfaces.IDymoLabel dymoSDKLabel;
            public MainViewModel()
            {
                DymoSDK.App.Init();
                dymoSDKLabel = DymoLabel.Instance;
                Printers = DymoPrinter.Instance.GetPrinters();
                TwinTurboRolls = new List<string>() { "Auto", "Left", "Right" };
            }
            /// <summary>
            /// Open a Dymo label file and load the content in the instance of the class
            /// Get the preview image of the label
            /// Get the list of object names
            /// </summary>
            private void OpenFileAction()
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "DYMO files |*.label;*.dymo|All files|*.*";
    
                if (openFileDialog.ShowDialog() == true)
                {
                    FileName = openFileDialog.FileName;
                   // DymoSDK.App.Init();
                    //Load label from file path
                    dymoSDKLabel.LoadLabelFromFilePath(FileName);
                    //Get image preview of the label
                    dymoSDKLabel.GetPreviewLabel();
                    //Load image preview in the control 
                    ImageSourcePreview = LoadImage(dymoSDKLabel.Preview);
                    //Get object names list
                    LabelObjects = dymoSDKLabel.GetLabelObjects().ToList();
                }
            }
            /// <summary>
            /// Print the current loaded label using the selected printer name
            /// </summary>
            private void PrintLabelAction()
            {
                int copies = 1;
                if (SelectedPrinter != null)
                {
                    //Send to print
                    if (SelectedPrinter.Name.Contains("Twin Turbo"))
                    {
                        int rollSel = SelectedRoll == "Auto" ? 0 : SelectedRoll == "Left" ? 1 : 2;
                        DymoPrinter.Instance.PrintLabel(dymoSDKLabel, SelectedPrinter.Name, copies, rollSelected: rollSel);
                    }
                    else
                        DymoPrinter.Instance.PrintLabel(dymoSDKLabel, SelectedPrinter.Name, copies);
    
                    //If the label contains counter objects
                    //Update counter object and preview to show the incresead value of the counter
                    var counterObjs = dymoSDKLabel.GetLabelObjects().Where(w => w.Type == DymoSDK.Interfaces.TypeObject.CounterObject).ToList();
                    if (counterObjs.Count > 0)
                    {
                        foreach (var obj in counterObjs)
                            dymoSDKLabel.UpdateLabelObject(obj, copies.ToString());
                        UpdatePreviewAction();
                    }
                }
            }
            /// <summary>
            /// Update the object value using the object name selected
            /// </summary>
            private void UpdateValueAction()
            {
                if (SelectedLabelObject != null)
                {
                    //Update label object value
                    dymoSDKLabel.UpdateLabelObject(SelectedLabelObject, ObjectValue);
                    UpdatePreviewAction();
                }
            }
Devi accedere o registrarti per scrivere nel forum
13 risposte