codecamp

简介与快速开始

OHSCE-Open HI-REL Signal Communication Engine



OHSCE是一款高可靠性跨平台的PHP通信框架,Windows友好且同时支持Linux和OS X对TCP、UDP、ICMP、RS232/485通信、简单内存通信与数据暂存,可轻松驾驭各种以太网应用和工业总线应用。OHSCE科学的平衡了高性能和高可靠性,天生分布式支持,特别适合应用于对可靠性和稳定性有较高要求的场景。如:物联网、工业与自动化工程、智能化工程、可靠网络服务。

      OHSCE将多个原本属于Linux的特性移植到WINDOWS平台且具有良好的运行效果。

      *采用高效的多进程模型,进程独立。

      *支持Windows平台串口完美读取(无需指定长度)。

      *支持Windows平台进程守护。

      *支持Windows平台进程间内存通信,小型数据内存中转。

       

快速入门

一、检查环境是否支持OHSCE

系统:Windows / Linux / OSX

          建议:WINDOWSSERVER2008及以上 UbuntuServer14.04LTS及以上

PHP:5.4及以上

          建议PHP5.4.45

PHP扩展:

           Socket,Shmop,Curl

二、修改配置文件

           /config/oibc_sce_config.php

三、运行测试程序

3.1工作在以太网上

一个TCP服务端测试程序:


<?php
ini_set('memory_limit',"88M");//重置php可以使用的内存大小为64M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
$trya='ohsce_server_Example ';
function example(&$socket,$buf,$len,$zv){  //收到数据时的回调函数
	global $trya;
	echo $buf;
	Ohsce_socketwrite($socket,$trya.'hi '.$buf);
	return true;
}
function exampleaccept(&$socket,$ip,$port,$zv){  //新客户端到访时的回调函数
	global $trya;
	Ohsce_socketwrite($socket,$trya.'Welcome'.$ip.':'.$port);
	return true;
}
Ohsce_eng_socket_server($ohsceserver,'tcp',7626,'127.0.0.1','example','exampleaccept');//创建一个TCP服务端资源 绑定127.0.0.1:7626 并传入回调函数
Ohsce_eng_socket_server_runtcp($ohsceserver); //开始运行

对应的客户端测试程序:



<?php
ini_set('memory_limit',"88M");//重置php可以使用的内存大小为64M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
Ohsce_eng_socket_client($ohsceclient,'tcp',7626,'127.0.0.1'); //创建一个TCP客户端资源并连接27.0.0.1:7626
echo Ohsce_socketread($ohsceclient['socket'],1024)[1]; //收取欢迎信息
Ohsce_socketsend($ohsceclient['socket'],'hello');  //发送数据
echo Ohsce_socketread($ohsceclient['socket'],1024)[1]; //收取回复数据
sleep(30);

UDP:

udpserver.php


<?php
ini_set('memory_limit',"88M");//重置php可以使用的内存大小为88M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
$trya='ohsce_server_Example ';
function example(&$socket,$buf,$from,$port,$zv){  //收到数据时的回调函数
	global $trya;
	echo $buf;
	 Ohsce_socketsend($socket,$trya.'hi '.$buf,0,0,$from,$port);
	return true;
}
Ohsce_eng_socket_server($ohsceserver,'udp',7626,'127.0.0.1','example');//创建一个TCP服务端资源 绑定127.0.0.1:7626 并传入回调函数
@Ohsce_eng_socket_server_runudp($ohsceserver); //开始运行
UDPCLIENT:



<?php
ini_set('memory_limit',"88M");//重置php可以使用的内存大小为64M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
Ohsce_eng_socket_client($ohsceclient,'udp',7628); //创建一个TCP客户端资源并连接27.0.0.1:7626
Ohsce_socketsend($ohsceclient['socket'],'hello',0,0,'127.0.0.1',7626);
Ohsce_socketrecvfrom($ohsceclient['socket'],$buf,0,0,$from,$port); //收取回复数据
echo $buf.'|'.$from.':'.$port;
sleep(30);


3.2工作在工业自动化现场控制网络上


操作串口RS232/485测试程序:


<?php
ini_set('memory_limit',"88M");//重置php可以使用的内存大小为64M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
Ohsce_eng_serial_creat($hscecom,"com7"); //OHSCE会默认为你创建一个 9600,n,8,1 写读的串口资源
Ohsce_eng_serial_open($hscecom); //一旦通过该函数成功开启了串口,此串口就被OHSCE进程占用了 此时串口资源变为可用状态
Ohsce_eng_serial_write($hscecom,"01030001000415c9",true);//向串口设备发送数据 以16进制发送
Ohsce_eng_serial_read($hscecom,$data,null,true); // 读取串口数据 返回数据长度为未知 以16进制返回
echo $data; //输出数据
sleep(30);


3.3测试使用OHSCE的进程守护

我们先写一个无用的自杀进程


<?php
sleep(60);
exit;

编写OHSCE-PCENTER入口文件:


<?php
$ohsce_pcenter_pr_name='测试';
$ohsce_pcenter_pr_prun='\pexample.php';
$ohsce_pcenter_memmorykey=6901;//注意 不得与生成器冲突,否则请提前注册。


启动并守护这个进程


正式运行使用隐藏窗口模式

  3.4.1CLOUD_API 

  云驱API可以让您降低更新频率或只更新指定组件既可以使用OHSCE_CLOUD上的最新的服务功能。
    3.4.2 CLOUD_MODBUS_DRIVE -举例云MODBUS驱动
    Ohsce_drive_cloud_modbus(null,"RTU","01",'01',"40001","0002"); 


官方网站:WWW.OHSCE.ORG WWW.OHSCE.COM

GITHUB: https://github.com/OpenIBC/Ohsce

GIT@OSC : https://git.oschina.net/SFXH/Ohsce


开发者QQ群:374756165

捐助&支持:http://www.ohsce.com/index.php/company/


合作&赞助&支持:

Email:lyztj100@163.com 

封装函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

函数参考

封装函数

基础函数

组件&插件

ENGINE

PCENTER-进程守护&管理器

OLMD-共享内存块代持器

COMSERVER-简单串口服务器

CALLNP

WEXT-扩展加载器

DRIVE

WCA-REST风格的串口发收器

Cloud_Modbus_MODBUS云驱动

EXT

OhsceCloudApi-云驱动API

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }