Showing results for 
Search instead for 
Did you mean: 
Showing results for 
Search instead for 
Did you mean: 

Community Tip - You can subscribe to a forum, label or individual post and receive email notifications when someone posts a new topic or reply. Learn more! X

C SDK Tutorial Part 1

No ratings


Use the C SDK to build an app that connects to ThingWorx with persistent bi-directional communication


Guide Concept

This project will introduce more complex aspects of the ThingWorx C SDK and help you to get started with development.  Following the steps in this this guide, you will be ready to develop your own IoT application with the ThingWorx C SDK.  We will teach you how to use the C programming language to connect and build IoT applications to be used with the ThingWorx Platform.


You'll learn how to

  • Establish and manage a secure connection with a ThingWorx server, including SSL negotiation and connection maintenance
  • Enable easy programmatic interaction with the Properties, Services, and Events that are exposed by Entities running on a ThingWorx server
  • Create applications that can be directly used with your device running the C programming language
  • Basic concepts of the C Edge SDK
  • How to use the C Edge API to build a real-world application
  • How to utilize resources provided in the Edge SDK to help create your own application

NOTE: This guide's content aligns with ThingWorx 9.3. The estimated time to complete ALL 3 parts of this guide is 60 minutes.


Step 1: Completed Examples

Download the completed files for this tutorial: ThingWorx C Edge SDK Sample  This tutorial will guide you through working with the C SDK on differing levels. Utilize this file to see a finished example and return to it as a reference if you become stuck creating your own fully fleshed out application.  Keep in mind, this download uses the exact names for Entities used in this tutorial. If you would like to import this example and also create Entities on your own, change the names of the Entities you create.


Step 2: Environment Setup

In order to compile C code, you need a C compiler and the ThingWorx C Edge SDK available in the PTC Support download site.  It will be helpful to have CMake installed on your system. CMake is a build tool that will generate make or project files for many different platforms and IDEs.


Operating System      Notes
WindowsYou will need a 3rd party compiler such as MinGW GCC, Cygwin GCC or you can follow these Microsoft instructions to download and use the Microsoft Visual C++ Build Tool.
MacDownload the Apple Developer Tools.
Linux/UbuntuA compiler is included by default.


NOTE: You can use CMake, version 2.6.1 or later to build projects or make files, which then are used to build the applications that you develop with the C SDK.



Before you can begin developing with the ThingWorx C SDK, you need to generate an Application Key and modify the source code file. You can use the Create an Application Key guide as a reference.


Modify Source File

    1. Extract the files from the C SDK samples zip file. At the top level of the extracted files, you will see a folder called examples. This directory provides examples of how to utilize the C SDK.
    2. Open a terminal, go to your workspace, and create a new directory. You can also just switch to the unzipped directory in your system.
    3. After you've created this directory in your workspace, copy the downloaded files and folders into your new directory.
    4. You can start creating your connection code or open the main.c source file in the examples\SteamSensor\src directory for an example.

      Operating System      Code
      Linux/Ubuntugedit main.c OR vi main.c
      Macopen –e main.c
      Windowsstart main.c

    5. Modify the Server Details section at the top with the IP address for your ThingWorx platform instance and the Application Key you would like to use.
      • Change the TW_HOST definition accordingly.
      • Change the TW_PORT definition accordingly.
      • Change the TW_APP_KEY definition to the keyId value saved from the last step.





/* Server Details */
#define TW_HOST "https://pp-XXXXXXXXX.devportal.ptc.i"
#define TW_PORT 80
#define TW_APP_KEY "e1d78abf-cfd2-47a6-92b7-37ddc6dd34618"​





NOTE: Using the Application Key for the default Administrator is not recommended. If administrative access is absolutely necessary, create a User and place the user as a member of Admins.


Compile and Run Code

To test your connection, you will only need to update the main.c in the SteamSensor example folder.

CMake can generate Visual Studio projects, make build files or even target IDEs such as Eclipse, or XCode. CMake generates a general description into a build for your specific toolchain or IDE.


  1. Inside the specific example folder you would like to run, ie SteamSensor.
  2. Create a directory to build in, for this example call it bin.
  3. mkdir bin 
  4. cd bin
  5. Run the CMake command listed below. This assumes CMake is already on your PATH.





cmake ..​






CMake has now produced a set of project files which should be compatible with your development environment.

Operating System        Command                                            Notes

UnixmakeA set of make files
Windowsmsbuild tw-c-sdk.sln /t:buildA visual studio solution


NOTE: CMake does its best to determine what version of Visual Studio you have but you may wish to specify which version to use if you have more than one installed on your computer. Below is an example of forcing CMake to use a specific version of Visual Studio: cmake -G "Visual Studio 15 2017" .. If your version of Visual Studio or other IDE is unknown, use cmake -G to see a list of supported IDEs.


You also have the alternative of opening the tw-c-sdk.sln from within Visual Studio and building in this IDE.


NOTE: By default, CMake will generate a build for the creation of a release binary. If you want to generate a debug build, use the command:












Once your build completes you will find the build products in the CMake directory (see example below). From here, open the project in your IDE of choice.


NOTE: You should receive messages confirming successful binding, authentication, and connection after the main.c file edits have been made.


Operating System Files Description


./bin/src/libtwCSdk_static.a Static Library
Unix./bin/src/ Shared Library
Unix./bin/examples/SteamSensor/SteamSensor  Sample Application
Windows.\bin\src\<Debug/Release>\twCSdk_static.lib Static Library
Windows.\bin\src\<Debug/Release>\twCSdk.dll Shared Library
Windows.\bin\examples\<Debug/Release>\SteamSensor\SteamSensor.exe Sample Application


Click here to view Part 2 of this guide.


Version history
Last update:
‎Mar 07, 2023 08:32 AM
Updated by:
Labels (2)