C#serialport上位机控制三菱fx2n PLC [问题点数:100分]

Bbs1
本版专家分:0
结帖率 67.65%
Bbs4
本版专家分:1065
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Bbs1
本版专家分:0
C#上位串口控制三菱fx2n plc
请问发送什么指令,可以打开X0。相应读写指令在哪里可以找到?有源码最好,谢谢!
C#轮询模式不懂
usi<em>n</em>g System; usi<em>n</em>g System.Collectio<em>n</em>s.Ge<em>n</em>eric; usi<em>n</em>g System.Text; usi<em>n</em>g System.Threadi<em>n</em>g; usi<em>n</em>g Sys
上位通过c#调用MX component实现与三菱PLC通讯。附源代码
由于本人在工业自动化行业做<em>机</em>器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业<em>机</em>器人进行通信。上一篇写了c#通过TCP与川崎<em>机</em>器人通讯,链接:c#链接川崎<em>机</em>器人。 在自动化项目中,除了视觉系统直接与<em>机</em>器人通信外,还有一种常用的就是上位<em>机</em>与<em>PLC</em>通信,再由<em>PLC</em>对<em>机</em>器人进行<em>控制</em>,这适用于整个项目比较复杂的情况。下面就介绍如何利用MX compo<em>n</em>e<em>n</em>t实现与<em>三菱</em><em>PLC</em>的通信。 首先当然是M
c# 远程监视,操作 读取 PLC源码
c# 远程监视,操作 读取 <em>PLC</em>源码
C#控制三菱PLC
在哪能买到C#<em>控制</em><em>三菱</em><em>PLC</em>的源码吗? 要求:1、可以写入、读出寄存器的数值; <em>2</em>、可以进行元件(Y、M、S、C、T)的置、复位操作; 3、可以读取元件(X、Y、M、S、C、T)的ON/OFF状态;
VB、C#等高级语言与三菱PLC(Q系列、L系列、FX系列)串口、以太网通讯的DLL及源代码
http://blog.si<em>n</em>a.com.c<em>n</em>/s/blog_16d7d3ecb010<em>2</em>x6wj.html 1.0 通讯组件概述 通讯组件用于PC与可编程<em>控制</em>器(<em>PLC</em>)、智能仪表等进行数据通讯,适用于基于PC高级语言的工业自动化<em>控制</em>系统。组件采用动态链接库文件(*.DLL)的形式,在PC系统的项目工程里引用该组件,调用相应的属性与方法函数,即可快速实现PC与<em>PLC</em>的高效数据交换。
欧姆龙PLC modbusRTU通讯解析(CP1E)
一 ModbusRTU说明 1.采用ModbusRTU通讯协议,进行读写操作; <em>2</em>.19<em>2</em>00;8,1,N;modubs-rtu简易主站 3.A640.0上升沿启动命令;ON-执行中,OFF-未执行或执行完成; 4.A640.1:ON-执行完成,OFF-执行中或者执行出错; 主站写从站 1.D1<em>2</em>00=从站地址; <em>2</em>.D1<em>2</em>0
Modbus高级通讯教程
可用于工控、仪器仪表、HMI开发的资料!!!
使用C#serialPort控件发送接收plc数据
<em>三菱</em><em>fx</em>3sA系列,现在需要通过电脑发送指令给plc对应点位,并接受plc对应点位返回的信号,请问程序怎么写?实现功能,三个按钮:正转,反转,停止。plc已经默认设置好了与变频器的设置,只需要三个按钮
C# SerialPort 读写三菱FX系列PLC
1:串口初始化   com = <em>n</em>ew SerialPort("COM3", 9600, Parity.Eve<em>n</em>, 7, StopBits.O<em>n</em>e); <em>2</em>:打开关闭串口 if (com.IsOpe<em>n</em>)  {com.Close();} com.Ope<em>n</em>();   if (com.IsOpe<em>n</em>) { com.Close();} 3:C# ASCII转字符及字符转ASCII
C#读取三菱FX PLC
这两天帮老爸干个活儿。。写个程序去读<em>PLC</em>里面的数据 端口设置如下: SerialPort com = <em>n</em>ew SerialPort("COM4", 9600, Parity.Eve<em>n</em>, 7, Sto
Modbus RTU与PLC通讯问题
c#做了个简单的上位<em>机</em>与<em>PLC</em>通讯,直接与<em>PLC</em>通讯时写线圈、保持型寄存器等功能正常,但是读<em>PLC</em>数据只返回一个<em>2</em>55。我用别的上位<em>机</em>软件与<em>PLC</em>通讯正常,这时再用我的程序读数据也正常了,把串口线拔掉
上位开发新手求教,如何通过modbus协议读取台达PLC的数据
本来想侦听串口来接收<em>PLC</em>发送的数据,后来<em>PLC</em>开发人员说无法发送到串口,只能研究modbus协议去主动读取<em>PLC</em>的数据。新手小白在网上找了很多相关的资源,发送命令帧数据需要有地址码 功能码 寄存器地
C#通过串口与三菱PLC通讯
C#通过串口与<em>三菱</em><em>PLC</em>通讯源代码,供大家参考学习,互相帮助
c#上位三菱PLC(FX3U)串口通讯
项目中会经常用到上位<em>机</em>与<em>PLC</em>之间的串口通信,本文介绍一下C#如何编写上位<em>机</em>代码 与<em>三菱</em>FX3U进行通讯 1. 第一种方法是自己写代码实现,主要代码如下: //对<em>PLC</em>的Y7进行置1 byte[] Y007_ON = { 0x0<em>2</em>, 0x37, 0x30, 0x37, 0x30, 0x35, 0x03, 0x30, 0x36 }; //选择串口参数 SerialPort sp = ...
那位高手有 VB 监控多台三菱PLC的例子?
那位高手有 VB 监控多台<em>三菱</em><em>PLC</em>的例子? 多台<em>三菱</em><em>PLC</em> 为485 连接方式 ; <em>PLC</em> 为FX<em>2</em>N!!
C#和三菱PLC socket网络通信
以下代码是用C++和<em>PLC</em>通信,但是我看不懂C++,能帮我把这段代码用C#的形式写出来吗? 或者有能直接和<em>PLC</em>网络通信的C#源码,感谢各位高手,谢谢,非常感谢~~~ ------------------------------------------------------------------------ #i<em>n</em>clude "stda<em>fx</em>.h" #i<em>n</em>clude "Se<em>n</em>sorMou<em>n</em>ter.h" #i<em>n</em>clude "SocketThread.h" IMPLEMENT_DYNCREATE(CSocketThread, CWi<em>n</em>Thread) CSocketThread::CSocketThread() : m_sIPAddress(_T("")) { m_<em>n</em>SocketPort = 0; m_bCo<em>n</em><em>n</em>ected = FALSE; m_<em>n</em>WtmE1 = 0; } CSocketThread::~CSocketThread() { } BOOL CSocketThread::I<em>n</em>itI<em>n</em>sta<em>n</em>ce() retur<em>n</em> TRUE; } i<em>n</em>t CSocketThread::ExitI<em>n</em>sta<em>n</em>ce() { retur<em>n</em> CWi<em>n</em>Thread::ExitI<em>n</em>sta<em>n</em>ce(); } BEGIN_MESSAGE_MAP(CSocketThread, CWi<em>n</em>Thread) ON_THREAD_MESSAGE(WMU_SOCKET_CONNECT, O<em>n</em>SCo<em>n</em><em>n</em>ect) ON_THREAD_MESSAGE(WMU_SOCKET_SEND, O<em>n</em>SSe<em>n</em>d) ON_THREAD_MESSAGE(WMU_SOCKET_RECV, O<em>n</em>SRecv) ON_THREAD_MESSAGE(WMU_SOCKET_CLOSE, O<em>n</em>SClose) ON_THREAD_MESSAGE(WMU_SOCKET_QUIT, O<em>n</em>SQuit) END_MESSAGE_MAP() void CSocketThread::O<em>n</em>SCo<em>n</em><em>n</em>ect(UINT wParam, LONG lParam) { TRACE("CSocketThread::O<em>n</em>SCo<em>n</em><em>n</em>ect: start\<em>n</em>"); BOOL bRC = SocketCo<em>n</em><em>n</em>ect(); _ST_SEND *pSe<em>n</em>d = (_ST_SEND *)wParam; if (!pSe<em>n</em>d) retur<em>n</em>; pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = (bRC ? 0 : -1); if (pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e) ::Se<em>n</em>dMessage(pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e, WMU_SOCKET_DONE, (WPARAM)pSe<em>n</em>d, (LPARAM)pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize); if (pSe<em>n</em>d->hEvDo<em>n</em>e) SetEve<em>n</em>t(pSe<em>n</em>d->hEvDo<em>n</em>e); } void CSocketThread::O<em>n</em>SSe<em>n</em>d(UINT wParam, LONG lParam) { TRACE("CSocketThread::O<em>n</em>SSe<em>n</em>d: start\<em>n</em>"); _ST_SEND *pSe<em>n</em>d = (_ST_SEND *)wParam; if (!pSe<em>n</em>d) retur<em>n</em>; if (!m_bCo<em>n</em><em>n</em>ected) { pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = -1; if (pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e) ::Se<em>n</em>dMessage(pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e, WMU_SOCKET_DONE, (WPARAM)pSe<em>n</em>d, (LPARAM)(-1)); if (pSe<em>n</em>d->hEvDo<em>n</em>e) SetEve<em>n</em>t(pSe<em>n</em>d->hEvDo<em>n</em>e); retur<em>n</em>; } pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = 0; switch (pSe<em>n</em>d-><em>n</em>DataType) { case _ST_DATA: pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = SocketSe<em>n</em>dData(pSe<em>n</em>d-><em>n</em>Addr, *((WORD *)pSe<em>n</em>d->pData), pSe<em>n</em>d->bDebugDisp); break; case _ST_MULTIBYTE: pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = SocketSe<em>n</em>dMultiByte(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); break; case _ST_MULTIWORD: pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = SocketSe<em>n</em>dMultiWord(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, (WORD *)pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); break; case _ST_MULTIBYTE_BIN: pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = SocketBi<em>n</em>Se<em>n</em>dMultiByte(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); break; case _ST_MULTIWORD_BIN: pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = SocketBi<em>n</em>Se<em>n</em>dMultiWord(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, (WORD *)pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); break; default: break; } if (pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e) ::Se<em>n</em>dMessage(pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e, WMU_SOCKET_DONE, (WPARAM)pSe<em>n</em>d, (LPARAM)(pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize)); if (pSe<em>n</em>d->hEvDo<em>n</em>e) SetEve<em>n</em>t(pSe<em>n</em>d->hEvDo<em>n</em>e); } void CSocketThread::O<em>n</em>SRecv(UINT wParam, LONG lParam) { _ST_SEND *pSe<em>n</em>d = (_ST_SEND *)wParam; if (!pSe<em>n</em>d) retur<em>n</em>; if (!m_bCo<em>n</em><em>n</em>ected) { pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = -1; if (pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e) ::Se<em>n</em>dMessage(pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e, WMU_SOCKET_DONE, (WPARAM)pSe<em>n</em>d, (LPARAM)(-1)); if (pSe<em>n</em>d->hEvDo<em>n</em>e) SetEve<em>n</em>t(pSe<em>n</em>d->hEvDo<em>n</em>e); retur<em>n</em>; } BOOL bRC; switch (pSe<em>n</em>d-><em>n</em>DataType) { case _ST_DATA: bRC = SocketReceiveData(pSe<em>n</em>d-><em>n</em>Addr, (WORD *)pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = (bRC ? sizeof(WORD) : 0); break; case _ST_MULTIBYTE: break; case _ST_MULTIWORD: bRC = SocketReceiveMultiWord(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, (WORD *)pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = (bRC ? pSe<em>n</em>d-><em>n</em>Size : 0); break; case _ST_MULTIWORD_BIN: bRC = SocketBi<em>n</em>ReceiveMultiWord(pSe<em>n</em>d-><em>n</em>Size, pSe<em>n</em>d-><em>n</em>Addr, (WORD *)pSe<em>n</em>d->pData, pSe<em>n</em>d->bDebugDisp); pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize = (bRC ? pSe<em>n</em>d-><em>n</em>Size : 0); break; default: break; } if (pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e) ::Se<em>n</em>dMessage(pSe<em>n</em>d->hw<em>n</em>dDo<em>n</em>e, WMU_SOCKET_DONE, (WPARAM)pSe<em>n</em>d, (LPARAM)(pSe<em>n</em>d-><em>n</em>Do<em>n</em>eSize)); if (pSe<em>n</em>d->hEvDo<em>n</em>e) SetEve<em>n</em>t(pSe<em>n</em>d->hEvDo<em>n</em>e); } void CSocketThread::O<em>n</em>SClose(UINT wParam, LONG lParam) { TRACE("CSocketThread::O<em>n</em>SClose: start\<em>n</em>"); SocketDisco<em>n</em><em>n</em>ect(); } void CSocketThread::O<em>n</em>SQuit(UINT wParam, LONG lParam) { TRACE("CSocketThread::O<em>n</em>SQuit: start"); // A<em>fx</em>E<em>n</em>dThread(0); ::PostQuitMessage(0); } BOOL CSocketThread::SocketCo<em>n</em><em>n</em>ect() { BOOL bRet; bRet = m_SW.Socket(m_<em>n</em>SocketPort); if (!bRet) { CStri<em>n</em>g msg; msg.Format("[NG] port:%d code = %d:%d", m_<em>n</em>SocketPort, m_SW.m_<em>n</em>ErrorCode, m_SW.m_<em>n</em>LastError); MessageBox(NULL, (LPCTSTR)msg, _T("CSocketThread::SocketCo<em>n</em><em>n</em>ect: Co<em>n</em><em>n</em>ect"), MB_ICONERROR); retur<em>n</em> (m_bCo<em>n</em><em>n</em>ected = FALSE); } bRet = m_SW.Co<em>n</em><em>n</em>ect((LPCTSTR)m_sIPAddress); if (!bRet) { CStri<em>n</em>g msg; msg.Format("[NG] Host Co<em>n</em><em>n</em>ect Error \<em>n</em> HostName:%s code = %d:%d", (LPCTSTR)m_sIPAddress, m_SW.m_<em>n</em>ErrorCode, m_SW.m_<em>n</em>LastError); MessageBox(NULL, (LPCTSTR)msg, _T("CSocketThread::SocketCo<em>n</em><em>n</em>ect: Co<em>n</em><em>n</em>ect"), MB_ICONERROR); retur<em>n</em> (m_bCo<em>n</em><em>n</em>ected = FALSE); } retur<em>n</em> (m_bCo<em>n</em><em>n</em>ected = TRUE); } BOOL CSocketThread::SocketBi<em>n</em>Se<em>n</em>dMultiByte(i<em>n</em>t <em>n</em>DataNum, UINT <em>n</em>Address, BYTE ucData[], BOOL bDebugDisp) { BYTE pSe<em>n</em>dBuf[37] = { 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xCC, 0xCC, 0x10, 0x00, 0x01, 0x14, 0x01, 0x00, 0xCC, 0xCC, 0xCC, 0x90, 0xCC, 0xCC, 0xD1, 0xD1, 0xD1, 0xD1, 0xD<em>2</em>, 0xD<em>2</em>, 0xD<em>2</em>, 0xD<em>2</em>, 0xD3, 0xD3, 0xD3, 0xD3, 0xD4, 0xD4, 0xD4, 0xD4 }; WORD wDataLe<em>n</em>gth = 1<em>2</em> + <em>n</em>DataNum*4; DWORD dwDeviceAddr = <em>n</em>Address + (0x90<<<< 0) { SocketDispErrorCode(_T("Se<em>n</em>dMultiByte(se<em>n</em>d)")); retur<em>n</em> FALSE; } if(m_<em>n</em>WtmE1 > 0) Sleep(m_<em>n</em>WtmE1); BYTE pReceiveBuf[11]; lo<em>n</em>g <em>n</em>Receive = m_SW.ReadBi<em>n</em>( pReceiveBuf, 11); if ( <em>n</em>Receive < 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiByte(receive)")); retur<em>n</em> FALSE; } if ( pReceiveBuf[0]==0xD0 && pReceiveBuf[1]==0x00 && pReceiveBuf[<em>2</em>]==0x00 && pReceiveBuf[3]==0xFF && pReceiveBuf[4]==0xFF && pReceiveBuf[5]==0x03 && pReceiveBuf[9]==0x00 && pReceiveBuf[10]==0x00 ) { if(pReceiveBuf[7]==<em>2</em>) retur<em>n</em> TRUE; else if(pReceiveBuf[7]==0) retur<em>n</em> FALSE; } <em>n</em>Receive = m_SW.ReadBi<em>n</em>( pReceiveBuf, pReceiveBuf[7]-<em>2</em>); if ( <em>n</em>Receive < 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiByte(receive)")); retur<em>n</em> FALSE; } retur<em>n</em> TRUE; } BOOL CSocketThread::SocketBi<em>n</em>Se<em>n</em>dMultiWord(i<em>n</em>t <em>n</em>DataNum, UINT <em>n</em>Address, WORD wData[], BOOL bDebugDisp) { BYTE pSe<em>n</em>dBuf[33] = { 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xCC, 0xCC, 0x10, 0x00, 0x01, 0x14, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xA8, 0xCC, 0xCC, 0xD1, 0xD1, 0xD<em>2</em>, 0xD<em>2</em>, 0xD3, 0xD3, 0xD4, 0xD4, 0xD5, 0xD5, 0xD6, 0xD6 }; WORD wDataLe<em>n</em>gth = 1<em>2</em>+<em>n</em>DataNum*<em>2</em>; DWORD dwDeviceAddr = <em>n</em>Address + (0xA8<>8; pSe<em>n</em>dBuf[<em>2</em>1+i*<em>2</em>] = wData[i]&0x00FF; } i<em>n</em>t <em>n</em>Se<em>n</em>d = m_SW.Se<em>n</em>dBi<em>n</em>( pSe<em>n</em>dBuf, <em>2</em>1+<em>n</em>DataNum*<em>2</em> ); if (<em>n</em>Se<em>n</em>d < 0) { SocketDispErrorCode(_T("Se<em>n</em>dMultiWord(se<em>n</em>d)")); retur<em>n</em> FALSE; } if(m_<em>n</em>WtmE1 > 0) Sleep(m_<em>n</em>WtmE1); BYTE pReceiveBuf[11]; lo<em>n</em>g <em>n</em>Receive = m_SW.ReadBi<em>n</em>( pReceiveBuf, 11); if ( <em>n</em>Receive < 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiWord(receive)")); retur<em>n</em> FALSE; } if ( pReceiveBuf[0]==0xD0 && pReceiveBuf[1]==0x00 && pReceiveBuf[<em>2</em>]==0x00 && pReceiveBuf[3]==0xFF && pReceiveBuf[4]==0xFF && pReceiveBuf[5]==0x03 && pReceiveBuf[9]==0x00 && pReceiveBuf[10]==0x00 ) { if (pReceiveBuf[7]==<em>2</em>) retur<em>n</em> TRUE; else if (pReceiveBuf[7]==0) retur<em>n</em> FALSE; } <em>n</em>Receive = m_SW.ReadBi<em>n</em>( pReceiveBuf, pReceiveBuf[7]-<em>2</em>); if ( <em>n</em>Receive < 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiByte(receive)")); retur<em>n</em> FALSE; } retur<em>n</em> TRUE; } BOOL CSocketThread::SocketBi<em>n</em>ReceiveMultiWord(i<em>n</em>t <em>n</em>DataNum, UINT <em>n</em>Address, WORD wData[], BOOL bDeviceCode) { BYTE pSe<em>n</em>dBuf[<em>2</em>1] = { 0x50, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0xCC, 0xCC, 0x10, 0x00, 0x01, 0x04, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x90, 0xCC, 0xCC }; WORD wDataLe<em>n</em>gth = 1<em>2</em>; DWORD dwDeviceAddr; if (bDeviceCode==FALSE) dwDeviceAddr = <em>n</em>Address+(0x90<<< 0) { SocketDispErrorCode(_T("Se<em>n</em>dMultiWord(se<em>n</em>d)")); retur<em>n</em> FALSE; } if(m_<em>n</em>WtmE1 > 0) Sleep(m_<em>n</em>WtmE1); BYTE pReceiveBuf[<em>2</em>1]; i<em>n</em>t <em>n</em>ReadLe<em>n</em>gth; for (i<em>n</em>t i=0; i< 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiWord(receive)")); retur<em>n</em> FALSE; } if ( pReceiveBuf[0]==0xD0 && pReceiveBuf[1]==0x00 && pReceiveBuf[<em>2</em>]==0x00 && pReceiveBuf[3]==0xFF && pReceiveBuf[4]==0xFF && pReceiveBuf[5]==0x03 && pReceiveBuf[9]==0x00 && pReceiveBuf[10]==0x00 ) { if(pReceiveBuf[7]==0 || pReceiveBuf[7]==<em>2</em> ) retur<em>n</em> FALSE; else <em>n</em>ReadLe<em>n</em>gth = pReceiveBuf[7]-<em>2</em>; } else { retur<em>n</em> FALSE; } for (i<em>n</em>t i=0; i< 1 ) { SocketDispErrorCode(_T("Se<em>n</em>dMultiByte(receive)")); retur<em>n</em> FALSE; } else { for(i<em>n</em>t i=0; i<), MB_ICONERROR); }
c#与三菱PLC通讯读写实例
c#与<em>三菱</em>FX<em>2</em>N系列<em>PLC</em>进行COM口通讯进行配置,实现数据读写
C#三菱FX系列PLC纯串口命令各区域读写
C#<em>三菱</em>FX系列<em>PLC</em>纯串口命令各区域读写,对于D区,各类型数据均有涉及:short,i<em>n</em>t,float,简单的demo,并非项目,一目了然
SerialPort与三菱PLC通讯的问题(c# )
本人正在用c#做一个与<em>三菱</em><em>PLC</em>通讯的程序,用SerialPort类的DataReceived的事件接收的数据都分成几段。请问如何一次接收所有的数据。
C# serialport读写多个三菱fx系列plc
问题:现场有30-40个<em>三菱</em>FX系列plc,是通过485扩展模块串连的,我在网上找的例子改了一下后,现在可以对单个的plc进行读写操作命令(通过plc上4<em>2</em><em>2</em>口,rs<em>2</em>3<em>2</em>转usb接口的数据线接到电脑
哪位有C#与三菱PLC通讯的源码,最好有实例
最近小弟想用C#编写上位<em>机</em>与<em>三菱</em><em>PLC</em>通讯,并对<em>PLC</em>内的软元件地址监控 不知哪位大侠,有这方面的实例,借小弟观摩下!
C#与三菱FX1N系列PLC通过RS232通信
希望做过这个的前辈们,能给个源代码做些参考,例如读写D10区的数据
C#与三菱FX系列PLC通信的问题
要用C#进行PC与<em>三菱</em>FX系列<em>PLC</em>的通信, 从而可以进行运动<em>控制</em>, 求高人指点!
模拟三菱FX2N系列PLC的串口通信(实测通过)
软件开发背景:由于项目需要,上位<em>机</em>软件与<em>三菱</em>FX<em>2</em>N系列<em>PLC</em>的串口交换数据时,但手头上又没有<em>PLC</em>硬件,所以开发了这样一个工具来当<em>PLC</em>使用。 /* 功能:模拟<em>PLC</em>的数据通信 作者:蒙新栋 日期:<em>2</em>013-05-01 说明:  */ usi<em>n</em>g System; usi<em>n</em>g System.Collectio<em>n</em>s.Ge<em>n</em>eric; usi<em>n</em>g System.Compo<em>n</em>e
三菱PLC和PC通过编程口串行通信实现
1 系统硬件构成     <em>三菱</em>FX系列<em>PLC</em>自带的编程口是RS-4<em>2</em><em>2</em>接口,而PC<em>机</em>的串行通信口则是RS-<em>2</em>3<em>2</em>C接口,两者之间需要通过SC-09适配电缆才能通信。不同设备上相同类型的通信接口的引脚定义可能存在差异。PC<em>机</em>与<em>三菱</em>FX系列<em>PLC</em>上的通信接口引脚定义如图1所示。 图1 接口引脚定义     RS-4<em>2</em><em>2</em>和RS-<em>2</em>3<em>2</em>C是两种不同标准的串行数据接口,两者的主要差
PC与三菱PLC串口通信 C#实例源程序
通过C#编写的串口 与<em>三菱</em><em>PLC</em> 通信 该例程实现了读写<em>三菱</em><em>PLC</em>的电压、开关量数据
C#与三菱PLC串口通信
C#与<em>三菱</em><em>PLC</em>串口通信,SerialPort控件实现。
PC与三菱FX2N型PLC串口通信的实现
PC与<em>三菱</em>FX<em>2</em>N型<em>PLC</em>串口通信的实现
c#通过MX component连接三菱PLC源代码
上位<em>机</em>安装MX compo<em>n</em>e<em>n</em>t后,利用c#调用MX compo<em>n</em>e<em>n</em>t,以达到和<em>三菱</em><em>PLC</em>进行通讯的目的
如何利用C#做上位控制PLC
利用C#制作一个界面,与触摸屏连接再<em>控制</em><em>PLC</em>进行电<em>机</em>变频调速!!
PLC通讯实现-C#实现三菱PLC通讯(三)
<em>PLC</em>通讯实现-C#实现<em>三菱</em><em>PLC</em>通讯MXCompo<em>n</em>e<em>n</em>t(三)背景抽象设计<em>三菱</em><em>PLC</em>通讯实现MXCompo<em>n</em>e<em>n</em>t 背景 本人近十年的工作都与工业软件相关、其中工控系统开发过程中有一个必要环节就是跟各大厂商的<em>PLC</em>进行通讯,而对于从互联网行业跨入工业互联网行业的从业人员来说要实现各型号<em>PLC</em>通讯还是需要一个过程的,本人在此对主流型号<em>PLC</em>通讯实现进行总结以便大家参考。 抽象设计 首先我们要进行...
PC与三菱PLC串口通信 C#实例源程序下载
通过C#编写的串口 与<em>三菱</em><em>PLC</em> 通信 该例程实现了读写<em>三菱</em><em>PLC</em>的电压、开关量数据 相关下载链接://dow<em>n</em>load.csd<em>n</em>.<em>n</em>et/dow<em>n</em>load/qq_4<em>2</em>5<em>2</em>8981/10515071?
c#调用MX component实现与三菱PLC通讯 记录log
最近在学习C#如果通过MX Compo<em>n</em>et 实现与<em>三菱</em><em>PLC</em>的读写,ascii,i<em>n</em>t类型的读写,以及用log4记录log
c# 与三菱FX5U PLC通讯交互下载
VB.NET、C#等PC高级语言与<em>三菱</em>FX5U通讯的源代码,采用TCP方式,支持整数、双整数、浮点数据; 无须安装,直接复制到项目工程即可,支持ASCII和二进制两种格式; 相关下载链接://dow<em>n</em>
C#程序与PLC通讯PLC收到c#程序发送过来的指令并正确相应之后为什么没有返回数据
C#写的程序发送一条指令给<em>PLC</em>,<em>PLC</em>收到并正确相应之后为什么没有返回数据,但是用串口调试助手发送同一条指令给plc,plc有数据返回,请问怎么样才能让C#程序发送指令之后也有数据返回 C#程序打开
c#程序读取PLC
用了timer空间和系统timer,timer.I<em>n</em>terval=1,理论上是1秒可以读取1000个数据,实测下来1秒才10+个,差距太大了。 因为要采集数据描绘曲线,1秒不求1000个数据,但是50
C# 使用serialPort,在Timertick里使用串口发送数据,同时再接收串口数据,发生冲突
RT,有没有办法互不干扰,我的TimerTick设置的是<em>2</em>00ms
C#多线程串口通信
这是一个非常经典的C#串口多线程实例,把部分代码发送来让大家看看 usi<em>n</em>g System; usi<em>n</em>g System.IO; usi<em>n</em>g System.IO.Ports; usi<em>n</em>g System.
c# 运用serialport与PLC串口通讯,读取(例如D200)的数据
网上下的 c# 运用serialport与<em>PLC</em>串口通讯程序,小白看不太懂下的程序,求大神帮忙分析下,主要想知道程序中的tebox1、textbox4、textbox5、textbox6、textbox7分别对应图中哪个空,对应的空应填写什么,例如想读取<em>三菱</em>F3X系列<em>PLC</em> D<em>2</em>00的数据,初始地址填<em>2</em>00?那设备地址和长度填啥? 界面如下:![图片说明](https://img-ask.csd<em>n</em>.<em>n</em>et/upload/<em>2</em>01806/14/15<em>2</em>8961750_9<em>2</em>350.p<em>n</em>g) 主要程序如下: private void bt<em>n</em>_ope<em>n</em>_Click(object se<em>n</em>der, Eve<em>n</em>tArgs e) { i<em>n</em>t <em>n</em>Select; bt<em>n</em>_ope<em>n</em>.E<em>n</em>abled = false; Object selectedItem = cbxCOMPort.SelectedItem; sp.PortName = selectedItem.ToStri<em>n</em>g();//串口 selectedItem = cbxBaudRate.SelectedItem; sp.BaudRate = i<em>n</em>t.Parse(selectedItem.ToStri<em>n</em>g());//波特率 <em>n</em>Select = cbxDataBits.SelectedI<em>n</em>dex;//数据位 switch (<em>n</em>Select) { case 0: sp.DataBits = 8; break; case 1: sp.DataBits = 7; break; case <em>2</em>: sp.DataBits = 6; break; case 3: sp.DataBits = 5; break; } <em>n</em>Select = cbxParity.SelectedI<em>n</em>dex; switch (<em>n</em>Select) { case 0: sp.Parity = Parity.No<em>n</em>e; break; case 1: sp.Parity = Parity.Odd; break; case <em>2</em>: sp.Parity = Parity.Eve<em>n</em>; break; case 3: sp.Parity = Parity.Mark; break; case 4: sp.Parity = Parity.Space; break; } <em>n</em>Select = cbxStopBits.SelectedI<em>n</em>dex; switch (<em>n</em>Select) { case 0: sp.StopBits = StopBits.No<em>n</em>e; break; case 1: sp.StopBits = StopBits.O<em>n</em>e; break; case <em>2</em>: sp.StopBits = StopBits.O<em>n</em>ePoi<em>n</em>tFive; break; case 3: sp.StopBits = StopBits.Two; break; } sp.Ope<em>n</em>(); bt<em>n</em>_close.E<em>n</em>abled = true; } private void bt<em>n</em>_se<em>n</em>d_Click(object se<em>n</em>der, Eve<em>n</em>tArgs e) { textBox1.Text = ""; i<em>n</em>t <em>n</em> = 6; byte[] buf = <em>n</em>ew byte[<em>n</em>]; stri<em>n</em>g ee = textBox4.Text; buf[0] = Co<em>n</em>vert.ToByte(ee); if (comboBox1.Text == "3X") { buf[1] = Co<em>n</em>vert.ToByte(3); } else { buf[1] = Co<em>n</em>vert.ToByte(4); } if (i<em>n</em>t.Parse(textBox5.Text) < 4) { i<em>n</em>t b = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox5.Text), 16).Substri<em>n</em>g(0, 1), 16); buf[<em>2</em>] = Co<em>n</em>vert.ToByte(b); i<em>n</em>t c = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox5.Text), 16).Substri<em>n</em>g(1, <em>2</em>), 16); buf[3] = Co<em>n</em>vert.ToByte(c); } else { i<em>n</em>t b = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox5.Text), 16).Substri<em>n</em>g(0, <em>2</em>), 16); buf[<em>2</em>] = Co<em>n</em>vert.ToByte(b); i<em>n</em>t c = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox5.Text), 16).Substri<em>n</em>g(<em>2</em>, <em>2</em>), 16); buf[3] = Co<em>n</em>vert.ToByte(c); } } if (i<em>n</em>t.Parse(textBox6.Text) < 4) { i<em>n</em>t d = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox6.Text), 16).Substri<em>n</em>g(0, 1), 16); buf[4] = Co<em>n</em>vert.ToByte(d); i<em>n</em>t f = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox6.Text), 16).Substri<em>n</em>g(1, <em>2</em>), 16); buf[5] = Co<em>n</em>vert.ToByte(f); } else { i<em>n</em>t d = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox6.Text), 16).Substri<em>n</em>g(0, <em>2</em>), 16); buf[4] = Co<em>n</em>vert.ToByte(d); i<em>n</em>t f = Co<em>n</em>vert.ToI<em>n</em>t3<em>2</em>(Co<em>n</em>vert.ToStri<em>n</em>g(i<em>n</em>t.Parse(textBox6.Text), 16).Substri<em>n</em>g(<em>2</em>, <em>2</em>), 16); buf[5] = Co<em>n</em>vert.ToByte(f); } } p = i<em>n</em>t.Parse(textBox6.Text) * <em>2</em> + 5; byte[] buf1 = <em>n</em>ew byte[<em>n</em> + <em>2</em>]; byte[] Retur<em>n</em>Data = <em>n</em>ew byte[<em>2</em>]; Retur<em>n</em>Data = CRC16_C(buf); for (i<em>n</em>t i = 0; i < <em>n</em>; i++) { buf1[i] = buf[i]; } buf1[<em>n</em>] = Retur<em>n</em>Data[1]; buf1[<em>n</em> + 1] = Retur<em>n</em>Data[0]; sp.Write(buf1.ToArray(), 0, <em>n</em> + <em>2</em>); } void sp_DataReceived(object se<em>n</em>der, SerialDataReceivedEve<em>n</em>tArgs e) { i<em>n</em>t <em>n</em> = sp.BytesToRead; byte[] TxData = <em>n</em>ew byte[<em>n</em>];//声明一个临时数组存储当前来的串口数据 sp.Read(TxData, 0, <em>n</em>); //读取缓冲数据 m = m + <em>n</em>; this.I<em>n</em>voke((Eve<em>n</em>tHa<em>n</em>dler) (delegate { Array.Resize(ref TxData<em>2</em>, m);//改写数组大小 TxData.CopyTo(TxData<em>2</em>, m - TxData.Le<em>n</em>gth); if (m == p) { byte[] data = <em>n</em>ew byte[p - <em>2</em>]; for (i<em>n</em>t i = 0; i < TxData<em>2</em>.Le<em>n</em>gth - <em>2</em>; i++) { data[i] = TxData<em>2</em>[i]; } byte[] data<em>2</em> = <em>n</em>ew byte[<em>2</em>]; data<em>2</em>[0] = TxData<em>2</em>[TxData<em>2</em>.Le<em>n</em>gth - <em>2</em>]; data<em>2</em>[1] = TxData<em>2</em>[TxData<em>2</em>.Le<em>n</em>gth - 1]; byte[] data1 = <em>n</em>ew byte[<em>2</em>]; data1 = CRC16_C(data); if (data1[0] == data<em>2</em>[1] && data1[1] == data<em>2</em>[0]) { for (i<em>n</em>t j = 3; j < tmpData.Le<em>n</em>gth; i++) { CRC16Lo = (byte)(CRC16Lo ^ tmpData[i]); for (Flag = 0; Flag > 1); CRC16Lo = (byte)(CRC16Lo >> 1); if ((SaveHi & 0x01) == 0x01) { CRC16Lo = (byte)(CRC16Lo | 0x80); } if ((SaveLo & 0x01) == 0x01) { CRC16Hi = (byte)(CRC16Hi ^ CH); CRC16Lo = (byte)(CRC16Lo ^ CL); } } } byte[] Retur<em>n</em>Data = <em>n</em>ew byte[<em>2</em>]; Retur<em>n</em>Data[0] = CRC16Hi; Retur<em>n</em>Data[1] = CRC16Lo; retur<em>n</em> Retur<em>n</em>Data;
急求c# 与三菱plc 以太网通讯 案例 源代码
希望有案例的源代码哦
三菱FX系列PLC编程口通信协议举例
本文介绍的 PC 与<em>三菱</em> FX 系列 <em>PLC</em> 通信,是通过 <em>PLC</em> 的编程口与 PC <em>机</em>的串口进行的,采用 SC-09 编程电缆作为计算<em>机</em>与 <em>PLC</em> 通信的连线。电缆的 9 芯 D 形插头连接在计算<em>机</em>串口上,另一端连接 <em>PLC</em> 的 RS-4<em>2</em><em>2</em> 编程口。 编写 PC 的通信程序
关于C#使用网络连接方式连接三菱PLC
最近有个要用网络方式读取<em>PLC</em>内容,以前没有弄过,不知道有没有实际的代码例子。 我看到网上很多说装一个MX Co<em>n</em>po<em>n</em>e<em>n</em>t V4 来连接<em>三菱</em>的<em>PLC</em>,C#可以调用这个来和<em>PLC</em>通讯,不知道这个怎么
PC监控三菱PLC C#程序
Lai LIAO wove a <em>PLC</em>, PC mo<em>n</em>itor, really ca<em>n</em> use first try the commu<em>n</em>icatio<em>n</em> with <em>PLC</em>. But for begi<em>n</em><em>n</em>
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csd<em>n</em>.<em>n</em>et/qq_45791147 文章目录1.转义<em>2</em>.正则表达式初步<em>2</em>.1.匹配字符<em>2</em>.1.1.组成元素<em>2</em>.1.<em>2</em>.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的li<em>n</em>ux运维命令,大学时候开始接触li<em>n</em>ux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Me<em>n</em>:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在<em>2</em>008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危<em>机</em>、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margi<em>n</em>: 0; paddi<em>n</em>g: 0; text-decoratio<em>n</em>: <em>n</em>o<em>n</em>e; list-...
Python十大装B语法
Pytho<em>n</em> 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Pytho<em>n</em> 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Pytho<em>n</em> 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
<em>2</em>019年11月<em>2</em>日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 ra<em>n</em>k pl_ perce<em>n</em>tage 1 java 33.6<em>2</em>% <em>2</em> cpp 16.4<em>2</em>% 3 c_sharp 1<em>2</em>.8<em>2</em>% 4 javascript 1<em>2</em>.31% 5 pytho<em>n</em> 7.93% 6 go 7.<em>2</em>5% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,<em>2</em>019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟<em>机</em>还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 <em>2</em>017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomethi<em>n</em>g } else if(msgType = "图片") { // doshomethi<em>n</em>g } else if(msgType = "视频") { // doshomethi<em>n</em>g } else { // doshom...
Nginx 原理和架构
Ngi<em>n</em>x 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Ngi<em>n</em>x 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Ngi<em>n</em>x 的整体架构 Ngi<em>n</em>x 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Pytho<em>n</em>是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Ido<em>n</em>’t k<em>n</em>ow what that dream is that you have, I do<em>n</em>'t care how disappoi<em>n</em>ti<em>n</em>g it might have bee<em>n</em> as you've bee<em>n</em> worki<em>n</em>g toward that dream,but that dream that you’re holdi<em>n</em>g i<em>n</em> your mi<em>n</em>d, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGe<em>n</em>erator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危<em>机</em>,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 <em>2</em>013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算<em>机</em>专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 <em>2</em>) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
金山办公上市,雷军心愿了却!
作者 | 胡巍巍 出品 | CSDN(ID:CSDN<em>n</em>ews) 11月17日,大周末的,雷军微博发了个重磅消息: “明天将是里程碑式的一天,金山办公终于成功在科创板挂牌上市了! 从1988年金山创办到今天,WPS走了整整31年。 从1999年以金山办公为主体准备上市算起,这一天,我们等了<em>2</em>0年。 WPS和金山的历程,这是一个坚持梦想并最终取得胜利的励志故事。期待大家的祝福!”...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDN<em>n</em>ews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车?某胡同口的煎饼摊一年能卖出多少个煎饼?深圳有多少个产品经理?一辆公交车里能装下多少个乒乓球?一个正常成年人有多少根头发?这类估算问题,被称为费米问题,是以科学家费米命名的。为什么面试会问这种问题呢?这类问题能把两类人清楚地区分出来。一类是具有文科思维的人,擅长赞叹和模糊想象,它主要依靠的是人的第一反应和直觉,比如小孩...
17张图带你解析红黑树的原理!保证你能看懂!
二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找树(Bi<em>n</em>ary Search Tree),也称有序二叉树(ordered bi<em>n</em>ary tree),排序二叉树(sorted bi<em>n</em>ary tree),是指一棵空树或者具有下列性质的二叉树: 若任意结点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意结点的...
腾讯“疯狂”开源!
作者 | 马超 责编 | 胡巍巍 出品 | CSDN(ID:CSDN<em>n</em>ews) 近日,腾讯自研的万亿级分布式消息中间件TubeMQ正式开源,并捐赠给Apache基金会,成为基金会官方认可的I<em>n</em>cubator项目。 我们知道与TubeMQ功能类似的kafka是领英公司在早在10年前捐赠给Apache基金会的金牌项目,而那时的腾讯还在忙于3Q大战,公司文化也相对封闭,甚至连目前社交领...
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。 背后实现代码一定很复杂吧,里面一定有很多高深莫测的<em>机</em>器学习等复杂算法 不过,当我看了源代码之后 这程序不到50行 尽管我有多年的Pytho<em>n</em>经验,但我竟然一时也没有看懂 当然啦,原作者也说了,这个代码也是在无聊中诞生的,平时撸码是不写中文变量名的, 中文...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于<em>2</em>019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalki<em>n</em>g,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalki<em>n</em>g 更...
MySQL数据库总结
一、数据库简介 数据库(Database,DB)是按照数据结构来组织,存储和管理数据的仓库。 典型特征:数据的结构化、数据间的共享、减少数据的冗余度,数据的独立性。 关系型数据库:使用关系模型把数据组织到数据表(table)中。现实世界可以用数据来描述。 主流的关系型数据库产品:Oracle(Oracle)、DB<em>2</em>(IBM)、SQL Server(MS)、MySQL(Oracle)。 数据表:数...
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Li<em>n</em>ux 的语句 <em>n</em>etstat -tul<em>n</em>p | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手<em>机</em>MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用<em>2</em>0行Pytho<em>n</em>代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F1<em>2</em>打开调试台,找到英雄原皮肤的图片...
中年危,35 岁定律,见鬼去吧!
中年危<em>机</em>,35 岁定律,相信你都听说过,每次触及还会让你感到丝丝焦虑,毕竟时间这把杀猪刀不会放过任何一个人。中年危<em>机</em>或 35 岁定律是客观存在的,你迟早都会遭遇的,那你是否有信心战胜它呢? 中年危<em>机</em>之所以让人害怕,一则是你没有把握打赢这场遭遇战,再则中年是一个输不起的阶段。古人云:知己知彼,百战不殆。恐惧,主要源自对敌人和自己的不了解,不知道敌人的优劣势,也不清楚自己的长短板,常常以己之所短攻彼...
腾讯架构师,为了家庭去小厂,一个月后主动离职:不做中台就是等死
今天咱们第一课,来讲讲大家一直很关注的数据中台。其实,数据中台也是企业数据管理的一部分,甚至可以说是很重要的一部分。 一、什么是中台? 这其实是一个老生常谈的概念了,中台,顾名思义,就是在起中间作用的东西,前有前台,后有后台。 对于中台每个人可能有不同的理解,行业里也没有严格的定义,但我更认同其中一个说法就是:中台是企业级能力复用的平台。 那这句话怎么理解呢? 既然核心是能力复...
用sql演示脏读,不可重复读,幻读,不怕你看不懂
介绍 要聊事务,不可避免的要提到数据库事务的四大特性 原子性(Atomic) 一致性(Co<em>n</em>siste<em>n</em>cy) 隔离性(Isolatio<em>n</em>) 持久性(Durability) 今天只聊隔离性,其他的比较好理解,建议看推荐阅读中关于事务的讲解。 先放一个表格,看看4个隔离级别会出现的各种问题,网上的解释一大堆。看完后还是一脸蒙蔽,感觉懂了,又好像没懂。因为没有具体的演示例子,索性自己尝试复现这几个问题...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课...
阿里靠什么武功秘籍渡过“双十一“的天量冲击
双十一大概会产生多大的数据量呢,可能大家没概念,举个例子央视拍了这么多年电视新闻节目,几十年下来他存了大概80P的数据。而今年双11一天,阿里要处理970P的数据,做为一个IT人,笔者认为今年”双十一“阿里最大的技术看点有有以下两个: 阿里的数据库,也就是刚刚拿下TPC冠军的Occea<em>n</em>Base,处理峰值也达到了骇人听闻的6100万次/秒, 阿里核心系统百分百上云了。 如果把信息系统比做一个武...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
<em>2</em>019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
iOS Bug 太多,苹果终于坐不住了!
开源的 A<em>n</em>droid 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDN<em>n</em>ews) 毋庸置疑,当前移动设备操作系统市场中,A<em>n</em>droid 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 A<em>n</em>droid 吸引了无数的手<em>机</em>厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
一场值得反思的面试
我是小黑:8号参加的宣讲会和笔试。笔试后和面试官聊一会,笔试通过后还有群面。没想到的是,群面通过还有9号终面。终面是<em>2</em>对1,也就是<em>2</em>个面试官面试我1个人。好事多磨,最终拿到了offer。下面说下这次求职中的面试题。【面试题】讲一下简历中的两个项目中,发现了什么问题,使用了什么分析方法,得出什么结论?【反思】面试官说“你得出的结论都是可以看的见的,应该从数据背后得到一些不容易看到的内容”简历中我自己...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开<em>机</em>后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个wi<em>n</em>dows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xio<em>n</em>g)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Joomla与Drupal有何区别下载
详细的介绍了Joomla与Drupal的缺点,以及两者的优点。joomla更像windows,界面漂亮,商业化程度高,操作简单,上手快,而drupal则类似于linux,入门难,灵活性高,更适合于做二次开发。 相关下载链接:[url=//download.csdn.net/download/zzbaikecom/3375596?utm_source=bbsseo]//download.csdn.net/download/zzbaikecom/3375596?utm_source=bbsseo[/url]
cc_ref.chm下载
不错的CC命令帮助文档,方便查找命令学习。。。 相关下载链接:[url=//download.csdn.net/download/cpzhzhouzhen/3685364?utm_source=bbsseo]//download.csdn.net/download/cpzhzhouzhen/3685364?utm_source=bbsseo[/url]
SSD5全部选择题的答案下载
这是SSD5全部选择题(multiple+choice)的答案,你们懂的 相关下载链接:[url=//download.csdn.net/download/wnowspsu/3069218?utm_source=bbsseo]//download.csdn.net/download/wnowspsu/3069218?utm_source=bbsseo[/url]
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
我们是很有底线的