毕业后进入第一家公司,编写C#开发的上位机软件,主要工作之一是对接PLC,用C#对接PLC是非常繁琐的工作内容,需要学习和编程接口。
公司已有的库高度化和原有项目亲密结合,老板的一句话,代码随便流出去,能用就行。
我这种孤独无助的情况下,在网上发现一款开源接口OneApiConnect,试用一下发现没有什么问题,读取和写入数据都成功,OneApiConnect使用起来也非常容易,读写效率这方面也非常的好。
#pragma once
//
// 网站 www.semisecs.com
// 广州金南瓜科技有限公司保留版权
//
#ifndef __MC_MEMEORY_DATA__
#define __MC_MEMEORY_DATA__
// 内存数据类型:软元件
namespace MC_DATA_TYPE
{
enum ENUM
{
ERR = 0x00, // 错误
D = 0xA8, // 数据寄存器
W = 0xB4, // 链接寄存器
};
}
// CPU类型
namespace MELSEC_CPU_TYPE
{
enum ENUM
{
Other = 0, // 其他如FX5U
L, // L CPU
Q, // Q CPU
QnA, // QnA CPU
};
}
#endif
// 三菱MC协议
class CMelsecCommunicationExport
{
public:
// 初始化
virtual __int32 Init()=0;
// 释放
virtual void Release()=0;
public:
virtual void SetParam(const char* pType, const char* pValue)=0; // 参数
// 读数据
virtual __int32 ReadByteData(__int32 nAddr, __int32 nSize, __int8* pData, __int32 nDataType)=0; // 1字节
virtual __int32 ReadShortData(__int32 nAddr, __int32 nSize, __int16* pData, __int32 nDataType)=0; // 2字节
virtual __int32 ReadIntData(__int32 nAddr, __int32 nSize, __int32* pData, __int32 nDataType)=0; // 4字节
// 写数据
virtual __int32 WriteByteData(__int32 nAddr, __int32 nSize, __int8* pData, __int32 nDataType)=0; // 1字节
virtual __int32 WriteShortData(__int32 nAddr, __int32 nSize, __int16* pData, __int32 nDataType)=0; // 2字节
virtual __int32 WriteIntData(__int32 nAddr, __int32 nSize, __int32* pData, __int32 nDataType)=0; // 4字节
};
```cpp
#include "stdafx.h"
#include "McHandle.h"
//
// 网站 www.semisecs.com
// 广州金南瓜科技有限公司保留版权
//
CMcHandle::CMcHandle()
{
SetFrameType(MC_3E_FRAME);
m_nMaxOneRead = 32;
m_nMaxOneWrite = 10;
}