Tutti gli articoli di Alberto

Teched 2006 Barcellona

Lunedì mattina parto per Barcellona, c’è un misto di attesa e trepidazione per questo che sarà il mio primo evento MS. Come citavo nel mio blog su thinkmobile.it vado solo per confermare che le conferenze italiane sono altrettanto valide e sicuramente meno costose 😉

Sto in questi sere (il tempo è sempre troppo poco) cercando di definire le varie sessioni che seguirò, tra gli argomenti principali:

  • Windows SharePoint Services v3 and Office SharePoint Servers 2007
  • .NET Framework 3.0
  • .NET Compact Framework e CE 6.0

Le sessioni sono talmente tante che penso passerò più tempo a casa a vedere il cd post event.

Mercoledì sera, che tristezza, sarò al Italy Country Drinks (scherzo 😉 Come sempre all’estero ci si rintana con gente della propria nazione.

Su questi schermi posterò le impressioni sulle varie sessioni.

Stay tuned 😉

Perdita di connessione durante il debug e breakpoint

Ultimamente sto soffrendo di problemi di connessione al device durante il debug. Durante il passaggio da una funzione all'altra si inchioda e VisualStudio mi ritorna l'errore

"The remote connection to the device has been lost. Please verify the device connection and restart debugging"

l'errore lo ottengo passando da un componente all'altro, apparentemente senza alcuna relazione.

Non ho trovato molte informazioni in rete, ma sembra che il problema sia dovuto ai breakpoint del debugger: per qualche motivo, impostatndo qualche breakpoint in più o in meno, si verifica una condizione che fa fallire il processo di step-through.

Una soluzione che con me ha funzionato è: rimuovere tutti i breakpoint e successivamente chiudere e riaprire VisualStudio.

(E' una cosa riporta a tempo indietro, ma alla fine "chiudere e riaprire" serve sempre…. )

Qualche link utile:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=487407&SiteID=1
http://www.eggheadcafe.com/aspnet_answers/NETFrameworkCompactFramework/Jan2006/post25812386.asp

Ciao!

Serializzazione di Custom Entities in CF con XmlTypeAttribute specificato

Ho scritto un piccolo articoletto riguardo un problema con l’utilizzo dell’attributo XmlTypeAttribute all’internodi un’applicazione CF2.0

Ho sperimentato infatti in un progetto come il CF serializzi in maniera leggermente diversa lo stesso codice dal framework standard. E’ necessario stare attenti a come si specificano le proprietà nel caso di classi che derivano da altre.

Hope it helps

WindowsMobile Virtual Labs

Segnalo a tutti la disponibilità di alcuni Virtual Labs molto interessanti che è possibile fruire via web.
Mettono a disposizione un’ambiente virtuale completo su cui fare esperimenti prima di mettere mano al proprio pc o server (e fare danni o errori 😉

Ci sono ovviamente dei training guidati che è possibile seguire.

Il tutto è disponibile all’indirizzo: http://msdn.microsoft.com/virtuallabs/windowsmobile/

Interessante anche che ci siano già i primi sulle beta di windowce 6.0: http://msdn.microsoft.com/virtuallabs/windowsce/

Alberto

MSMQ e RegFlushKey

A seguito dei problemi di persistenza del registro che io ho registrato su un ipaq rx1950, vedi post precedente, e visto che alcuni si sono trovati con il mio stesso problema, allego a questo nuovo post un’esempio di codice che io uso per forzare il flush del registro e rendere le modifiche persistenti.

Il codice in realtà non è mio, ma non ricordo da dove ho preso spunto e trovato alcune cose 😉

Trovate in allegato sia il sorgente che, se volete usarlo, il file già compilato nella directory bin/debug.
C’è anche una parte che provvede a copiare i file necessari a MSMQ, personalmente io preferisco usare il cab fornito da MS: in realtà non cambia nulla.
Se volete, dovete riabilitare la voce dal menu.

Spero vi sia utile.Ciao!

Device industriali e PC104

Posto qualche informazione preliminare per chi come me, ha l’esigenza di trovare un device per un applicazione in ambito industriale.

Questo ambito di applicazione di WindowsMobile è veramente affascinante, si possono trovare soluzioni che a basso costo permettono di utilizzare una piattaforma stabile, facile da programmare ed estendere.

Cercando un po’ in rete, e con qualche suggerimento (da parte di qualcuno a caso ;), sono arrivato al pc104, che è uno standard per le piattaforme embedded: http://en.wikipedia.org/wiki/PC104 

Ne esistno veramente di tutti i tipi, vi riporto qualche riferimento di quello da me per ora identificato. Ioavevo l’esigenza di trovare un devide con requisiti hw medio-bassi per poter implementare un webserver che, tramite seriale, comandasse un altro dispositivo esterno.

Qualche esempio è:
http://www.embeddedsys.com/subpages/products/sbc1586.shtml
http://www.compulab.co.il/x255/html/x255-sb-datasheet.htm
http://www.dsl-ltd.co.uk/products/pb855spec.htm

Attualmente, sto approfondendo maggiornemnte i componenti di Compulab, distribuiti da Microsystems in italia.

Il pricing di questi device parte dai $45 e dipende dal numero di periferiche addizionali si attivano (porte ethernet, display lcd, interfaccia per monitor, etc).

I prezzi dipendono moltissimo dai volumi, quello riportato sopra ad esempio è per 1000 pezzi, nel caso di 10 pezzi il prezzo raddoppia, nel caso di un unica unità il prezzo è triplicato.
Il tutto mi sembra comunque sensato (per maggiori info: http://www.compulab.co.il/x255/html/x255-sb-datasheet.htm)

C’è da tener presente che è disponibile un kit di valutazione del tutto contenente due schede, tutti i connettori, e l’alimentatore. Il costo è di circa 1600 euro. E’ anche restituibile entro 45 giorni se il kit non va bene per la tipologia di applicazione da sviluppare.

Nel caso sia necessario ricompilare la piattaforma WinCe, sono anche disponibili a pagamento i driver della scheda.

Ah, dimenticavo, ricordatevi che per ogni device è OVVIAMENTE necessario comprare la licenza di Windows; ci sono tre versione, la core, la professional e la professional+
Qualche info ulteriore sulle differenze tra le versioni core e professional possono essere trovate qui: http://www.microsoft.com/downloads/details.aspx?FamilyID=9387A73D-D046-4F36-A862-613743E75197&displaylang=en

Spero vi sia utile.

L’installazione di MSMQ non resiste al primo softreset su WM 5.0 e ipaq rx1950 – Part II

Aggiungo qualche ulteriore dettaglio riguardo questo problema, secondo me discretamente serio, che ho iniziato a esporre nel mio post precedente

Alla fine c’è voluto il supporto PSS di Microsoft. Il problema risiede nel fatto che WM5.0 ha una gestione complessa del registro: per questioni di performance questo viene sempre tenuto in memoria.

Microsoft ha predisposto una chiamata di sistema mediante la quale è possibile chiedere al sistema operativo di serializzare il registro e di renderlo persistente. Questa funzione, teoricamente, dovrebbe essere gestita dall’OEM (il produttore del device: nel mio caso HP) al fine di amministrare correttamente queste fasi, ad esempio per un salvataggio periodico ogni tot minuti o all’accadere di eventi particolari, tipo un soft-reset.

A me sembra logico pensare che prima di un soft-reset, le eventuali modifiche sul registro debbano essere salvate sul filesystem. Per qualche motivo HP non ritiene (almeno in questa versione della rom) che questo sia il caso.
(Nota: è ovvio pensare che l’uso del registro per applicazioni personali non si a del tutto corretto: è inutile appesantirlo per le proprie impostazioni, meglio usare un file config. Anche se a volte è utile poter salvare un’informazione in un posto un po’ più protetto…)

Tornando a noi, al softreset, tutte le modifiche al registry vengono perse!!

Per ovviare a ciò, è possibile chiamare la funzione RegFlushKey che si occupa di forzare la serializzazione. Attenzione, anche a detta di Microsoft, questa funzione potrebbe non fare niente!!! E’ a discrezione del OEM definire la modalità di persistenza del registro, a seconda delle caratteristiche del device.

Riporto il codice che io ho utilizzato e che ho trovato sul newsgroup microsoft.public.dotnet.framework.compactframework su segnalazione di Raffaele Limosani di MS che ringrazio:

[DllImport(“CoreDll.dll”, EntryPoint = “RegFlushKey”, SetLastError = true)]
private static extern uint RegFlushKey(uint hKey);

private void menuRegistry_Click(object sender, EventArgs e)
{

try
{

long reg = RegFlushKey(0x80000002);
if
(reg == 0)
   MessageBox.Show(“Registro Salvato”);

}
catch (Exception
ex)
{
MessageBox.Show(“Errore: “
+ System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString());
}

}

Una volta effettuato le modifiche sul registro, ad esempio a seguito della registrazione di MSMQ, lanciando il RegFlushKey e facendo un soft-reset, il tutto funziona correttamente.

Io su questo piccolo dettaglio ci ho speso quasi tre settimane… Spero sia di aiuto a qualcuno di voi.
Ciao!

Deployment di applicazioni x PPC tramite autorun su schede SD

Riporto giusto qualche info di riferimento nel caso doveste avere anche voi l’esigenza di distribuire una vostra applicazione tramite schede SD.

Anche queste schede, come i cd-rom per pc, supportano l’esecuzione di un programma autorun, con qualche piccola complicazione in più derivante dal fatto che cpu dei ppc sono di tecnologie diverse.
Per ogni cpu c’è una cartella particolare da utilizzare, all’interno della quale è necessario inserire un programma autorun.exe, all’inserimento della scheda sd, verrà copiato nella directory windows (in WM 5.0 la directory è windowsautorunStorage Card1, uno per ogni storage card) e da li lanciato con parametro install; alla rimozione della scheda sd, lo stesso comando verrà rilanciato con parametro uninstall, per poter eventualente gestire anche questo evento.

Ovviamente l’autorun poi  potrà lanciare l’installazione del vostro applicativo, nel caso in cui non sia stato mai installato, o non fare niente nel caso in cui sia già installato.

Per maggiori info:
http://blogs.msdn.com/marcpe/archive/2005/06/17/430123.aspx
http://www.informit.com/guides/printerfriendly.asp?g=security&seqNum=91&rl=1
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win_ce/html/pwc_AutoRun.asp

 

L’installazione di MSMQ non resiste al primo softreset su WM 5.0 e ipaq rx1950

Alle volte la vita è veramente molto molto dura.

E’ circa due settimane che combatto come un matto con il componente MSMQ, all’inizio con le stringhe di connessione (alle quali è necessario fare MOLTA attenzione) e successivamente con l’installazione nel device.

Per quanto riguarda le stringhe dovevo inviare un messaggio ad una coda transazionale residente su un pc con windows XP, residente in rete locale.
Il tutto si è risolto impostando come stringa di connesione:
FormatName:Direct=OS:servernameprivate$MyQueueTX;XACTONLY
attenzione anche ad impostare correttamente l’opzione del MessageQueueTransactionType durante la send del messaggio.

La seconda parte del problema (più snervante) è che a seguito dell’installazione del componente MSMQ nel device, e del relativo soft-reset, il componente non risultava installato.

Nel dettaglio, una volta installato msmq.cab, da windowsvisadmin eseguivo:
– Shortcut -> install
– Shortcut -> register
– Shortcut -> Verify
il quale riportava che il componente era stato correttamente installato e registrato

e poi il soft-reset che è consigliato (ma che in WM 5.0 non dovrebbe essere necessario.
Anyway, a seguito del softreset, tornando su visadmin, verify, il msmqadm riportava che il componente non era ne installato ne registrato!!!!

Come si è risolto?!? Prima di effettuare il softreset, giusto dopo l’installazione, ho aperto  il componente “ipaq wireless”, attivato e disattivato la connessione wireless (non è necessario che sia connessa, basta accendere e subito spegnere).

Dopo il softreset il tutto sembra funzionare correttamente.
Ma il mondo dello sviluppatore (che è anche ovviamente un sistemista prima di tutto) dev’essere sempre così difficile?

Cercherò di approfondire la cosa perchè comunque il tutto non mi convince.

Vi lascio una serie di articoli che io ho usato per testare mille e una volta il tutto:

Infine secondo me molto ben fatto questo esempio da MS:
http://msdn2.microsoft.com/en-us/library/ms180970.aspx