当前位置:首页 > 沁工-PLC梯形图转指令表的算法源代码
227. pDC->TextOut(x+::CurW/2,y+40,name); 228. pDC->TextOut(x+::CurW/2,y+60,addr); 229. changeimg(x,y,pDC); 230. }
231. void HOR::print(int x,int y,CDC *pDC) 232. {
233. pDC->MoveTo(x,y+::CurH-10); 234. pDC->LineTo(x+::CurW,y+::CurH-10); 235. changeimg(x,y,pDC); 236. }
237. int HOR::testaddr() 238. {
239. return 0; 240. }
241. void ERECT::print(int x,int y,CDC *pDC) 242. {
243. pDC->MoveTo(x+::CurW,y-10); 244. pDC->LineTo(x+::CurW,y+::CurH-10); 245. }
246. void OUTPOINT::put_img(int x,int y,CDC *pDC) 247. {
248. int x1,y1; 249. x1=x+21; 250. y1=y+::CurH-10; 251. pDC->MoveTo(x,y1); 252. pDC->LineTo(x1,y1);
253. CRect rcEllipse(x1,y1-9,x1+18,y1+9); 254. pDC->SelectStockObject(NULL_BRUSH); 255. pDC->Ellipse(rcEllipse); 256. pDC->MoveTo(x1+18,y1); 257. pDC->LineTo(x+::CurW,y1); 258. }
259. void OUTPOINT::print(int x,int y,CDC *pDC) 260. {
261. put_img(x,y,pDC);
262. pDC->SetBkMode(TRANSPARENT);
263. pDC->SetTextAlign(TA_CENTER+TA_BOTTOM); 264. pDC->TextOut(x+::CurW/2,y+40,name); 265. pDC->TextOut(x+::CurW/2,y+60,addr); 266. changeimg(x,y,pDC); 267. }
268. void ADDTION::put_img(int x,int y,CDC *pDC) 269. {
270. pDC->MoveTo(x,y+::CurH-10);
271. pDC->LineTo(x+16,y+::CurH-10); 272. pDC->MoveTo(x+21,y+::CurH-18); 273. pDC->LineTo(x+16,y+::CurH-18); 274. pDC->LineTo(x+16,y+::CurH-1); 275. pDC->LineTo(x+21,y+::CurH-1); 276. pDC->MoveTo(x+37,y+::CurH-1); 277. pDC->LineTo(x+42,y+::CurH-1); 278. pDC->LineTo(x+42,y+::CurH-18); 279. pDC->LineTo(x+37,y+::CurH-18); 280. pDC->MoveTo(x+42,y+::CurH-10); 281. pDC->LineTo(x+::CurW,y+::CurH-10); 282. }
283. void ADDTION::print(int x,int y,CDC *pDC) 284. {
285. put_img(x,y,pDC);
286. pDC->SetBkMode(TRANSPARENT);
287. pDC->SetTextAlign(TA_CENTER+TA_BOTTOM); 288. pDC->TextOut(x+::CurW/2,y+40,name); 289. pDC->TextOut(x+::CurW/2,y+60,addr); 290. pDC->TextOut(x+30,y+77,code); 291. changeimg(x,y,pDC); 292. }
293. int ADDTION::testaddr() 294. {
295. char ch; 296. int i;
297. if (addr.GetLength()>4)// || strlen(name)==0) 298. return 1;
299. for (i=1;i
304. /************************************************************ 305. 8--SET 9--S 10--MC 12--K
306. 18--RST 19--R 11--MCR 13--F 307. 14--PLS 15--END
308. ************************************************************/ 309. case 8: 310. case 9: 311. case 18: 312. case 19: 313. {
314. ch=addr[0];
315. switch (ch) 316. {
317. case 'Y':
318. if (addr<\ || addr>\) 319. return 1; 320. else 321. break; 322. case 'M':
323. if (addr<\ || addr>\) 324. return 1; 325. else 326. break; 327. case 'C':
328. if (addr<\ || (addr>\ && 329. addr<\) || addr>\) 330. return 1; 331. else 332. break; 333. default:
334. return 1; 335. }//end of switch(ch) 336. break; 337. } 338. case 10: 339. case 11: 340. case 14: 341. {
342. ch=addr[0]; 343. switch (ch) 344. {
345. case 'M':
346. if (addr<\ || addr>\) 347. return 1; 348. else 349. break; 350. default: 351. return 1; 352. }//end of switch(ch) 353. break; 354. } 355. case 12: 356. {
357. if (addr<\ || addr>\) 358. return 1;
359. break; 360. } 361. case 13: 362. {
363. if (addr<\ || addr>\) 364. return 1; 365. break; 366. } 367. case 15: 368. break; 369. default:
370. return 1; 371. }// switch(flag); 372. return 0; 373. }
374. IOPOINT * LIST::ANBtest(IOPOINT *p) 375. {
376. IOPOINT *q;
377. IOPOINT *returnpoint=NULL; 378. BOOL flag; 379. flag=FALSE;
380. while (p->unup!=NULL) 381. {
382. p=p->unup; 383. q=p;
384. while (q->getflag()!=0
385. && (q->right!=NULL|| q->getfiveflag()==5)) 386. {
387. flag=TRUE;
388. if (q->undown!=NULL) 389. {
390. flag=FALSE; 391. returnpoint=q; 392. break; 393. }
394. q=q->right; 395. }
396. if (flag) 397. break; 398. }
399. return returnpoint; 400. }
401. IOPOINT * LIST::ANBcompile(IOPOINT *p,IOPOINT *endpoint) 402. {
共分享92篇相关文档