Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.

wendo's Content

There have been 34 items by wendo (Search limited from 12-May 23)


By content type

See this member's


Sort by                Order  

#58447 Browser problem: Firefox spell checker not working in edit box

Posted by wendo on 28 May 2014 - 07:57 AM in General Discussion

What _do_ you get when you right click in the edit box? Websites can replace the right click menu, but working around that is pretty simple with add-ons, but before you go down that road you'd want to confirm that's whats going on




#59033 Can anyone recommend a rock-solid LCD display?

Posted by wendo on 06 July 2014 - 04:44 AM in Netduino Plus 2 (and Netduino Plus 1)

Typically when I see that behavior on an LCD my first impression is I'm sending it data too fast. In saying that, most of my experience with LCD's has been either with serial LCD's or SPI/I2C ones as I hate having to dedicate heaps of pins to drive a screen




#59013 Control LCD Display

Posted by wendo on 04 July 2014 - 11:38 PM in Netduino Plus 2 (and Netduino Plus 1)

I've written a basic driver for this here

 

It's basically a direct port of the supplied driver for the arduino




#59032 Control LCD Display

Posted by wendo on 06 July 2014 - 04:42 AM in Netduino Plus 2 (and Netduino Plus 1)

I use 2012, although it should work in any version really (I'm surprised 2013 wouldn't open the sln honestly).

 

Youneed to make sure you have the NETMF Toolbox assembles installed and include Toolbox.NETMF.Core and Toolbox.NETMF.Hardware.Core as references




#60282 DHT11/22 sensor managed driver

Posted by wendo on 29 September 2014 - 01:51 AM in Project Showcase

When playing with these sensors I notice they take quite a while to stabilize after any changes. It may be as simple as moving between 3.3v and 5v VCC and they need some time to settle.




#58610 Disk Drive Storage Project

Posted by wendo on 06 June 2014 - 11:13 PM in General Discussion

I'm exceedingly doubtful you could do this with a netduino at any sort of decent speed.

 

Initially you need to get another USB port from somewhere at minimum, but likely 2 as they need to be host ports. Either these would have dedicated controllers of their own, which you interface with over SPI or I2C or something, or you'd need to bit-bash them, the second likely isn't possible at all due to timing issues, the first would severely limit your speed.

 

Secondly you don't have the sort of memory available for to do any sort of decent read caching. Assuming you can pull that off, you then need to be able to decode the partition table and file system, read the data from it and and write the data to the new file system at ~30MB/sec whicih is all you can get from USB2 anyway. I don't know of any way you could push that sort of speed through a netduino alas. 

 

You dismiss the software as easy, but being able to read and write to NTFS partitions and file systems is no small feat for something on this scale.

 

For something like that you'd probably want to look at something like an FPGA board, but even that would be pretty painful as while you'd get the hardware side done fairly easily at decent speed, you still need the whole filesystem and partition layer to be able to write to the second drive.




#60359 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 06 October 2014 - 06:32 PM in Netduino 2 (and Netduino 1)

No, not at all, both sites are internet based so it's entirely possible they are down or have some other issue...

 

The question is how do I handle that cleanly and without causing an exception? Embedding the statement in another try block doesn't work as I've also just gotten a 10053 error (connection aborted) at the same place.

 

Ideally what I'd like to be able to do is detect the exception and either just ignore it (since I'll send again in 30 seconds anyway) or retry it




#60372 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 08 October 2014 - 06:03 PM in Netduino 2 (and Netduino 1)

catch (Exception ex)
{
    Debug.Print(ex.Message);
}

The exceptions that occur appear to kill the timer that calls UploadData as far as I can tell. I've still got the debug.print command I added to show the free memory and once one of the exceptions hits that timer stops firing (it's the first line in the subroutine)




#60365 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 08 October 2014 - 03:55 AM in Netduino 2 (and Netduino 1)

As far as I'm aware I'm catching everything. I haven't changed any settings to limit what I'm catching and I assume the default is to catch everything?!




#60412 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 14 October 2014 - 04:24 AM in Netduino 2 (and Netduino 1)

So now I'm onto trying an AuroResetEvent since the delay in the main code just ended up crashing the main thread.

 

The weirdest thing is that I'm still not actually catching the exceptions in the catch block. I've added some text to the Debug.Print so now it looks like this

 

Debug.Print("SF: " + ex.Message);

 

and I get the occasional "SF:" printed, but no actual error. 

 

Still, we'll see if this is any more reliable...




#60583 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 30 October 2014 - 03:50 AM in Netduino 2 (and Netduino 1)

It has been in a try/catch the whole time, but it was still bombing out....

 

However, it's been happily running for something like 5 days now, and while it reports the stacktrace now, it's not locking up. I _think_ I either had a dodge network cable or is was the passive POE injector I was using (maybe a combination of both).

 

I've switched toa new network cable and removed the POE injector and it appears to be stable....

 

You'd think working in IT I would have looked at that earlier :). I also think putting it in it's own thread and using autoreset has helped too but at the moment I'm leaning towards the cable. After I hit a week I'll put the injector back in and see what happens.

 

Thanks for all your help on this. 




#60551 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 26 October 2014 - 09:28 PM in Netduino 2 (and Netduino 1)

Right, with ex.Stacktrace we have some success. I'm seeing 

 

SF: System.Net.HttpWebRequest::GetResponse
TempReceiver.Program::Upload_Thread
 
which is about what I had figured. I've seen some people claim the timeout setting doesn't work at the moment in NetMF so that may be related.
 
Also, congratulations on the wedding!



#60354 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 06 October 2014 - 07:31 AM in Netduino 2 (and Netduino 1)

Right, so I got an exception from System.Net.Sockets with an errorcode of 10060 and an m_HResult (whetever that is) of 4278190080 as this line 

using (var response = (HttpWebResponse)request.GetResponse())

10060 appears to be a timeout 

 

My question is why does a timeout cause an exception, and secondly shouldn't the try block that this is encased in catch this anyway? Or does a try block only catch exceptions from the next line?




#60385 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 10 October 2014 - 07:58 PM in Netduino 2 (and Netduino 1)

Can you give me a quick example of that by chance? I've done threads before so thats fine, just the blocking and manualreset that I've never heard of before. Also, thanks heaps for all the help!




#60378 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 09 October 2014 - 09:28 PM in Netduino 2 (and Netduino 1)

After a lot of random googling, it looks like this behavior is actually "by design"

 

Timers using System.Threading.Timer will terminate upon an exception, no matter what you do with it, see here

 

There appear to be a couple of other options I can try although they use System.Timers.Timer and I'm not sure that's in NETMF and not in a position to look right now




#60285 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 29 September 2014 - 06:11 AM in Netduino 2 (and Netduino 1)

The idea is for this to pretty much run uninterrupted for long periods of time so startup may only happen once every few months. I could probably push it out to once a week but I've got it going as often as it is pretty much exactly to catch these sorts of things :)




#60253 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 27 September 2014 - 06:21 PM in Netduino 2 (and Netduino 1)

I put the dispose in there as I had the same idea that it was a memory leak so I wanted to make sure the request was being cleaned up. 

 

In saying that, I haven't seen the same issue for a couple of days now so I'm wondering if something else I've done has fixed it. Code is attached below. It's a decent size so it's not inline.

 

Basically I have an arduino with weather sensors attached mounted outside. It sends all the data to the Netduino via an nRF24L01+ radio system every 10 seconds and from there the Netduino uploads it to Sparkfun (and now Weather Underground) ever 30 seconds. 

 

Just thinking about how I've seen this happening it's possible the errors are actually coming from the NTP syncing which I'm doing once an hour as the only time I've seen these errors is when I've left MFDeploy sitting running for hours/days and I've had to remove all the Debug.print statements from my program to even see them as the scrollback buffer was never long enough so I don't know for sure that it's coming from the original timer.

 

Any ideas welcome

Attached Files




#60229 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 25 September 2014 - 07:32 PM in Netduino 2 (and Netduino 1)

I should mention I'm running 4.3.1 firmware. Here's hoping they will fix it and we'll get a new firmware release otherwise my weather station receiver will need to move platforms. It's not ideal to have a data logger that stops logging data every day




#60217 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 25 September 2014 - 09:08 AM in Netduino 2 (and Netduino 1)

Hi

 

I'm getting this error intermittently on my N2+ when trying to send an HTTP GET command. I'm also getting "IP Address: <ip address>" printed semi regularly that isn't generated from my code. Presumably both are coming from a lower level and I have managed to track down the error message in what appears to be the NETMF firmware files, but it doesn't really make much sense to me.

 

The code that's generating the error is as below. It's called every 30 seconds from a timer. Can anyone explain what I'm doing wrong or how to get rid of the error? It seems to recover from this most of the time and continue but other times it then stops sending network traffic, although the rest of the program continues on fine.

        private static void UploadData(object sender)
        {
            var URLString = "http://data.sparkfun.com/input/" + sfPublicKey + "?private_key=" + sfPrivateKey + "&humidity=" + humidity.ToString("F1") + "&pressure=" + pressure.ToString("F0") + "&rain=" + rainfall.ToString("F0") + "&temp=" + temp.ToString("F1") + "&voltage=" + voltage.ToString("F2") + "&winddirection=" + windDirection.ToString("F0") + "&windgust=" + windGust.ToString("F1") + "&windspeed=" + windSpeed.ToString("F1") + "&charging=" + charging.ToString();
 
            try
            {
                using (HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URLString))
                {
                    request.Method = "GET";
                    request.KeepAlive = false;
                    request.Timeout = 5000;
                    request.ReadWriteTimeout = 5000;
 
                    using (var response = (HttpWebResponse)request.GetResponse())
                    {
                        if (response.StatusCode != HttpStatusCode.OK)
                        {
                            Debug.Print("HTTP Status:" + response.StatusCode + " : " + response.StatusDescription);
                        }
                    }
                    request.Dispose();
                }
            }
            catch (Exception ex)
            {
                Debug.Print(ex.Message);
            }
        }



#60269 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 28 September 2014 - 05:53 AM in Netduino 2 (and Netduino 1)

I'm getting a little lost trying to implement the locks. both lock and Monitor appear to require you specifying the actual object s to protech, but I just want to lock entire code blocks, and the objects are different in each block anyway?!

 

Thanks




#60270 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 28 September 2014 - 06:41 AM in Netduino 2 (and Netduino 1)

I've switched over to the Toolbox HTTP_Client library rather than the built in one to see if that may help, I'll also look at switching over to the Toolbox NTP library too if I continue to see it and go from there. I'd still love to know how to lock the code blocks though




#60320 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 02 October 2014 - 03:56 AM in Netduino 2 (and Netduino 1)

I haven't, but that's only because I have never known how too :)

 

With only an initial NTP sync I still see it so it's not NTP that's causing the problem. I actually captured the exception and it's coming from inside System.http.

 

I do suspect a memory leak but as far as I can tell it's inside the HTTP library. Anyway, I'll start tracking it now and we'll see what we end up with. The error doesn't appear to be the actual cause of the lockups, at least not directly, the lockup itself is the above mentioned exception (so not technically a lockup) and the errors occur multiple times before that happens, seemingly at random. It also doesn't appear to be tied to one site specifically as I've enabled and disabled both the sparkfun stream and the weather underground stream and it continued to happen on both, so it's not some screwy response from the server causing it.




#60287 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 29 September 2014 - 08:38 AM in Netduino 2 (and Netduino 1)

Locking didn't help, onto doing a single NTP sync on boot and seeing what happens with only the web traffic




#60281 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 29 September 2014 - 01:48 AM in Netduino 2 (and Netduino 1)

Thanks for that, and for the record, the toolbox HTTP_Client appears to make it much much worse. I'll see how I go with adding some locks. Failing that I might add an RTC and remove the NTP code entirely and see if the problem persists




#60345 enc28j60_lwip_recv: input alloc packet failed

Posted by wendo on 04 October 2014 - 11:07 AM in Netduino 2 (and Netduino 1)

So, not a memory leak, free memory stays pretty static around 79000

 

Is there some way I can catch the exceptions coming from System.Net and System.Http?





home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.