// LED5ksend.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Led5kSDK.h"
#include <iostream>
#pragma comment(lib,"Led5kSdk.lib")
int ledset(CString txt1, CString txt2, CString txt3, CString txt4, CString txt5, CString txt6);
void CString2Char(CString str, char ch[]);
//输入 6行数据 从左到右依次1-6
//返回 0 发送成功 1 通讯失败 2 发送失败
int ledset(CString txt1, CString txt2, CString txt3, CString txt4, CString txt5, CString txt6)
{
bx_5k_area_header m_AreaHeader;
char data[1024 * 64] ;
char data1[1024 * 64] ;
char data2[1024 * 64] ;
char data3[1024 * 64] ;
char data4[1024 * 64] ;
char data5[1024 * 64] ;
memset(data, 0, sizeof(data));
memset(data1, 0, sizeof(data1));
memset(data2, 0, sizeof(data2));
memset(data3, 0, sizeof(data3));
memset(data4, 0, sizeof(data4));
memset(data5, 0, sizeof(data5));
int data_len ;
int data_len1 ;
int data_len2 ;
int data_len3 ;
int data_len4;
int data_len5;
//初始化函数
InitSdk(2, 2);
//设置TCP提供讯 IP 端口 板卡类型
DWORD hand = CreateClient("192.168.0.55", 5005, (bx_5k_card_type)BX_5MK2, 1, NULL);
if (hand == 0)
{
return 1;
}
//数据准备
m_AreaHeader.AreaType = 0;
m_AreaHeader.AreaX = 0;//起始点x坐标
m_AreaHeader.AreaY = 64;//起始点Y坐标
m_AreaHeader.AreaWidth = 96 / 8;
m_AreaHeader.AreaHeight = 16;
m_AreaHeader.DynamicAreaLoc = 0xff;
m_AreaHeader.Lines_sizes = 0;//行间距
m_AreaHeader.RunMode = 0;
m_AreaHeader.Timeout = 0;
memset(m_AreaHeader.Reserved, 0, sizeof(m_AreaHeader.Reserved));
m_AreaHeader.SingleLine = 1;//单行1 多行2 显示
m_AreaHeader.NewLine = 1;//手动换行1 自动换行2
m_AreaHeader.DisplayMode = 3;//静止显示;快速打出;向左移动;向右移动;向上移动;向下移动;
m_AreaHeader.ExitMode = 0;
m_AreaHeader.Speed = 1;//1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;
m_AreaHeader.StayTime = 20;//停留多少0.5秒
CString2Char(txt1, data);
CString2Char(txt2, data1);
CString2Char(txt3, data2);
CString2Char(txt4, data3);
CString2Char(txt5, data4);
CString2Char(txt6, data5);
data_len = strlen(data);
data_len1 = strlen(data1);
data_len2 = strlen(data2);
data_len3 = strlen(data3);
data_len4 = strlen(data4);
data_len5 = strlen(data5);
//第一区域赋值
int len = sizeof(bx_5k_area_header) + data_len;
int length = sizeof(bx_5k_area_header) + 4;
m_AreaHeader.DataLen = data_len;
int sum_length = length * 6 + data_len + data_len1 + data_len2 + data_len3 + data_len4 + data_len5;
BYTE *buff = new BYTE[sum_length];
memcpy(buff, &len, 4);
memcpy(buff + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff + length, data, data_len);
//第二区域赋值
int pach = len+4;
len = sizeof(bx_5k_area_header) + data_len1;
m_AreaHeader.DataLen = data_len1;
BYTE *buff1 = new BYTE[len + 4];
memcpy(buff1, &len, 4);
m_AreaHeader.AreaY = 80;
memcpy(buff1 + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff1 + 4 + sizeof(bx_5k_area_header), data1, data_len1);
memcpy(buff + pach, buff1, len + 4);
//第三行赋值
pach += len + 4;
len = sizeof(bx_5k_area_header) + data_len2;
m_AreaHeader.DataLen = data_len2;
BYTE *buff2 = new BYTE[4 + len];
memcpy(buff2, &len, 4);
m_AreaHeader.AreaY = 48;
memcpy(buff2 + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff2 + 4 + sizeof(bx_5k_area_header), data2, data_len2);
memcpy(buff + pach, buff2, len + 4);
//第四行赋值
pach += len + 4;
len = sizeof(bx_5k_area_header) + data_len3;
m_AreaHeader.DataLen = data_len3;
BYTE *buff3 = new BYTE[4 + len];
memcpy(buff3, &len, 4);
m_AreaHeader.AreaY = 32;
memcpy(buff3 + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff3 + 4 + sizeof(bx_5k_area_header), data3, data_len3);
memcpy(buff + pach, buff3, len + 4);
//第五行赋值
pach += len + 4;
len = sizeof(bx_5k_area_header) + data_len4;
m_AreaHeader.DataLen = data_len4;
BYTE *buff4 = new BYTE[4 + len];
memcpy(buff4, &len, 4);
m_AreaHeader.AreaY = 16;
memcpy(buff4 + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff4 + 4 + sizeof(bx_5k_area_header), data4, data_len4);
memcpy(buff + pach, buff4, len + 4);
//第六行赋值
pach += len + 4;
len = sizeof(bx_5k_area_header) + data_len5;
m_AreaHeader.DataLen = data_len5;
BYTE *buff5 = new BYTE[4 + len];
memcpy(buff5, &len, 4);
m_AreaHeader.AreaY = 0;
memcpy(buff5 + 4, &m_AreaHeader, sizeof(bx_5k_area_header));
memcpy(buff5 + 4 + sizeof(bx_5k_area_header), data5, data_len5);
memcpy(buff + pach, buff5, len + 4);
//其他参数
//CProgramDlg
BYTE ProgramLife[8];
memset(ProgramLife, 0xff, sizeof(ProgramLife));
BYTE ProgramWeek = 1;//全星期播放
BYTE ProgramTime = 0;//全天
char name_data[5] = "P001";
//时间
BYTE period[7];
int m_AreaNum = 6;//6个区域
int m_PlayTimes = 1;//播放次数
int err = OFS_SendFileData(hand, true, "P001", 0, m_PlayTimes, ProgramLife, ProgramWeek, ProgramTime, period, m_AreaNum, buff, sum_length);
delete[] buff;
delete[] buff1;
delete[] buff2;
delete[] buff3;
delete[] buff4;
delete[] buff5;
if (err != 0)
{
return 2;
}
return 0;
}
void CString2Char(CString str, char ch[])
{
#ifdef _UNICODE
int i;
char *tmpch;
int wLen = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);//得到Char的长度
tmpch = new char[wLen + 1]; //分配变量的地址大小
WideCharToMultiByte(CP_ACP, 0, str, -1, tmpch, wLen, NULL, NULL); //将CString转换成char*
for (i = 0; tmpch[i] != '\0'; i++) ch[i] = tmpch[i];
ch[i] = '\0';
delete tmpch;
#else
strcpy(ch, str.GetBuffer());
#endif
}
int main()
{
int err = ledset(_T("春眠不觉晓"), "处处闻啼鸟", "夜来风雨声", "花落知多少", _T("苏E55555"), _T("苏E66666"));
if (err == 1)
{
printf("通讯失败,请检查网线或相关设置!\n");
return 0;
}
if (err == 2)
{
printf("发送失败\n");
return 0;
}
printf("发送成功\n");
return 0;
}