Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7053491
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T03:30:42+00:00 2026-05-28T03:30:42+00:00

This trivial adaptation of the Pachube sample for Netduino doesn’t work. It doesn’t barf,

  • 0

This trivial adaptation of the Pachube sample for Netduino doesn’t work. It doesn’t barf, it just fails silently. I noticed that if you wait a little after the write, the socket reports 315 bytes in its Available property, but attempting to read the data simply doesn’t work – cb contains zero and the unchanged buffer agrees.

Why can’t I read this data? I suspect it’s a server response that might well help me figure out what’s wrong with the rest of the application.

Here’s the code:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware.NetduinoPlus;
using SecretLabs.NETMF.Hardware;

public class HelloPachubeSockets
{
    static string apiKey = "wggHejZTKTvE6ZplSc5feSs1rQLeD4cYmi7WPYiG0VLIx_TC-isp8CI9vkKq3nQxadhydl3gUiSK8vS5SBd9JCCoXQG-g0N8FXYlYcNjEfJVMQJA-usgijpE1LRT-xw5";
    static string feedId = "43974";
    static double maxVoltage = 3.3;
    static int maxAdcValue = 1023;
    static int interval = 20000;
    static Socket connection = null;
    static Timer timer;
    static AnalogInput voltagePort;
    static OutputPort lowPort, highPort;
    static IPEndPoint remoteEndPoint;
    static double V = 0;

    static void LogSensor(object state)
    {
        Debug.Print("time: " + DateTime.Now);
        Debug.Print("memory available: " + Debug.GC(true));
        try
        {
            connection = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            connection.SendTimeout = interval / 2;
            connection.Connect(remoteEndPoint);
            int rawValue = voltagePort.Read();
            double value = (rawValue * maxVoltage) / maxAdcValue;
            string sample = "voltage," + V.ToString("f");
            V += 0.1;
            Debug.Print("new message: " + sample);
            byte[] contentBuffer = Encoding.UTF8.GetBytes(sample);
            const string CRLF = "\r\n";
            var requestLine = "PUT /v2/feeds/" + feedId + ".csv HTTP/1.1\r\n";
            byte[] requestLineBuffer = Encoding.UTF8.GetBytes(requestLine);
            var headers =
                "Host: api.pachube.com\r\n" +
                "X-PachubeApiKey: " + apiKey + CRLF +
                "Content­Type: text/csv\r\n" +
                "Content­Length: " + contentBuffer.Length + CRLF +
                CRLF;
            byte[] headersBuffer = Encoding.UTF8.GetBytes(headers);
            connection.Send(requestLineBuffer);
            connection.Send(headersBuffer);
            connection.Send(contentBuffer);
            Thread.Sleep(400);
            int a = connection.Available;
            byte[] r = new byte[a];
            int cb = connection.Receive(r, 0, a, SocketFlags.None);
            connection.Close();
        }
        catch
        {
          Debug.Print("connection failed");
        }
    }

    public static void Main()
    {
        voltagePort = new AnalogInput(Pins.GPIO_PIN_A1);
        lowPort = new OutputPort(Pins.GPIO_PIN_A0, false);
        highPort = new OutputPort(Pins.GPIO_PIN_A2, true);
        remoteEndPoint = new IPEndPoint(Dns.GetHostEntry("api.pachube.com").AddressList[0], 80);
        timer = new Timer(LogSensor, null, 0, interval);
        Thread.Sleep(Timeout.Infinite);
    }
}

As regards validity of the Pachube key, I checked with cURL and the key and feed details are right.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T03:30:42+00:00Added an answer on May 28, 2026 at 3:30 am

    Looking at http://msdn.microsoft.com/en-us/library/w3xtz6a5.aspx#Y0, you shouldn’t need to sleep to wait for a response on the socket as Receive is a blocking operation if the buffer is empty.

    What if you tried simplifying your Receive code to something like:

    // Blocks until send returns.
    connection.Send(...)
    
    // Get reply from the server.
    int byteCount = server.Receive(bytes, 0, connection.Available, 
                                   SocketFlags.None);
    
    if (byteCount > 0)
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    

    Alternatively, you could explicitly attempt to read something like 256 bytes off of the socket, instead of the available number.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This is pretty trivial, but I noticed on SO that instead of an offset
Apologies for this trivial question, I'm new to WPF and keep finding blogs that
This seems trivial yet endless searching doesn't yield an answer. I need to compare
When I attempt to compile the output of this trivial lex program: # lex.l
This seems trivial, but I've never had to worry about it before and my
I know this seams a trivial question, but how can I disable the annoying
Sorry if this question seems trivial to many here. In a C++ code there
This is my first Bash script so forgive me if this question is trivial.
Wondering if anyone can help me with this annoying but trivial (in terms of
Question regarding how to setup dbase relationships (newbie, this may be trivial) Followed the

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.